如何在给定字符串中的操作之间添加空格?鉴于(1)它在已经有空间时不会添加空格,(2)它将删除两个或多个空格并将其转换为一个空格。我尝试更换所有,但如果整数是2位数或更多,它将无法工作。我也试过这个代码,但它不会起作用。
strExp = strExp.replace("(+|-|*|/)", " ").trim();
样本输入:10 + 2
样品输出:10 + 2
或
样本输入:10+ 2
样品输出:10 + 2
答案 0 :(得分:2)
您实际上正在尝试用空格替换数学运算符号。相反,您应该替换为空格包围的匹配操作符号。要将匹配的操作符号置于替换中,请使用反向引用(即$1
来引用第一个捕获组。)
您需要replaceAll()
才能使用正则表达式。
trim()
与字符串中间的空格无关,因此它是多余的。
由于您匹配单个字符(操作符号),因此使用字符类([...]
)而不是替换更为清晰。
要用一个空格替换潜在的一系列空格,请在操作符号模式周围添加\s*
。
这将为您提供以下代码:
strExp = strExp.replaceAll("\\s*([+*/-])\\s*", " $1 ");