如何在给定String中的两个操作之间添加空格?

时间:2017-06-19 08:06:45

标签: java regex string

如何在给定字符串中的操作之间添加空格?鉴于(1)它在已经有空间时不会添加空格,(2)它将删除两个或多个空格并将其转换为一个空格。我尝试更换所有,但如果整数是2位数或更多,它将无法工作。我也试过这个代码,但它不会起作用。
strExp = strExp.replace("(+|-|*|/)", " ").trim();

样本输入:10 + 2
样品输出:10 + 2

样本输入:10+ 2
样品输出:10 + 2

1 个答案:

答案 0 :(得分:2)

  1. 您实际上正在尝试用空格替换数学运算符号。相反,您应该替换为空格包围的匹配操作符号。要将匹配的操作符号置于替换中,请使用反向引用(即$1来引用第一个捕获组。)

  2. 您需要replaceAll()才能使用正则表达式。

  3. trim()与字符串中间的空格无关,因此它是多余的。

  4. 由于您匹配单个字符(操作符号),因此使用字符类([...])而不是替换更为清晰。

  5. 要用一个空格替换潜在的一系列空格,请在操作符号模式周围添加\s*

  6. 这将为您提供以下代码:

    strExp = strExp.replaceAll("\\s*([+*/-])\\s*", " $1 ");