2

我需要编写代码来更正用户输入。输入是中缀形式的数学表达式。为了使我的计算正确,我需要将每个操作数与运算符隔开。

你能帮我写一个能提供以下预期结果的方法吗?

预期输入:13*21-5+33 预期输出:13 * 21 - 5 + 33

我所做的研究:我只能找出如何在字符串中的每个字符之间添加空格,而这不适用于计算具有两位数值的表达式。即:1 3 * 2 1 - 5 + 3 3. Java 中如何在现有字符串的每个字符后插入空格?

谢谢

4

2 回答 2

1

此解决方案标准化每个运算符周围的空白。

return expr.replaceAll("(?<=\\d)\\s*([-+/*])\\s*(?=\\d)", " $1 ");
于 2012-05-11T09:49:19.647 回答
1

使用正则表达式查找数字,然后用空格包围它们:

string.replaceAll("\\d+", " $0 ").trim(); // trim in case numbers are first/last
于 2012-05-11T09:57:31.330 回答