Java 给定一个字符串(100*((2&èx2B;12)/5))/14,如何在每个运算符和数字之间添加空格?

Java 给定一个字符串(100*((2&èx2B;12)/5))/14,如何在每个运算符和数字之间添加空格?,java,Java,例如,我想从这个字符串开始 (100*((2+12)/5))/14 对此 ( 100 * ( ( 2 + 12 ) / 5 ) ) / 14 您可以迭代所有字符,然后检查是否: 如果是最后一个角色,什么都不要做 如果当前索引字符不是数字,则在其后面添加空格 如果当前索引字符是数字,但下一个字符不是,则在其后面添加空格 publicstaticvoidmain(字符串[]args) { 字符串str=“(100*((2+12)/5))/14”; StringBuilder sb=新的Str

例如,我想从这个字符串开始

(100*((2+12)/5))/14
对此

( 100 * ( ( 2 + 12 ) / 5 ) ) / 14

您可以迭代所有字符,然后检查是否:

  • 如果是最后一个角色,什么都不要做
  • 如果当前索引字符不是数字,则在其后面添加空格
  • 如果当前索引字符是数字,但下一个字符不是,则在其后面添加空格
publicstaticvoidmain(字符串[]args)
{
字符串str=“(100*((2+12)/5))/14”;
StringBuilder sb=新的StringBuilder();
对于(int i=0;i
您可以按以下方式操作

"(100*((2+12)/5))/14".replaceAll("\\D", "$0 ").replaceAll("\\d+", "$0 ").trim();
说明:

( 100 * ( ( 2 + 12 ) / 5 ) ) / 14
  • \D
    指定将被字符加空格替换的非数字字符
  • 完成上述替换后,将对返回的字符串应用第二个替换。在该替换中,
    \d+
    指定一个整数,该整数将替换为数字加空格
  • 最后,将通过
    trim()
    删除尾随和前导空格
  • 演示 输出:

    ( 100 * ( ( 2 + 12 ) / 5 ) ) / 14
    

    你试过解决方法吗?就我个人而言,我会从尝试开始。这是一种鲜为人知的技术,但效果很好。是的,我尝试使用循环将任何“”替换为“”,但它在100之间添加了空格。您可以循环字符,如果两个连续字符都是数字,请继续循环,否则请插入空格。
    ( 100 * ( ( 2 + 12 ) / 5 ) ) / 14