我需要编写代码来纠正用户输入。输入是中缀形式的数学表达式。 为了使我的计算正确,我需要每个操作数与操作员间隔开。
请你帮我写一个方法,提供以下预期结果。
预期投入:13 * 21-5 + 33 预期产出:13 * 21 - 5 + 33
我做过的研究:我只能找到如何在字符串中的每个字符之间添加空格,这对于计算具有双位数值的表达式是不行的。即:1 3 * 2 1 - 5 + 3 3. How to insert Space after every Character of an existing String in Java?
谢谢
答案 0 :(得分:1)
此解决方案规范化每个运算符周围的空白。
return expr.replaceAll("(?<=\\d)\\s*([-+/*])\\s*(?=\\d)", " $1 ");
答案 1 :(得分:1)
使用正则表达式查找数字然后用空格包围它们:
string.replaceAll("\\d+", " $0 ").trim(); // trim in case numbers are first/last