Java 在字符串中每一个或两个字符后插入空格
我需要编写代码来更正用户输入。输入是中缀形式的数学表达式。 为了使计算正确,我需要将每个操作数与运算符隔开Java 在字符串中每一个或两个字符后插入空格,java,math,spacing,infix-notation,Java,Math,Spacing,Infix Notation,我需要编写代码来更正用户输入。输入是中缀形式的数学表达式。 为了使计算正确,我需要将每个操作数与运算符隔开 return expr.replaceAll("(?<=\\d)\\s*([-+/*])\\s*(?=\\d)", " $1 "); 你能帮我写一个能提供以下预期结果的方法吗 预期输入:13*21-5+33 预期产出:13*21-5+33 我所做的研究:我只能找出如何在字符串中的每个字符之间添加空格,而这对于计算具有两位数值的表达式是行不通的。Ie:13*21-5+33 谢谢此解决
return expr.replaceAll("(?<=\\d)\\s*([-+/*])\\s*(?=\\d)", " $1 ");
你能帮我写一个能提供以下预期结果的方法吗
预期输入:13*21-5+33
预期产出:13*21-5+33
我所做的研究:我只能找出如何在字符串中的每个字符之间添加空格,而这对于计算具有两位数值的表达式是行不通的。Ie:13*21-5+33
谢谢此解决方案规范化了每个运算符周围的空白
return expr.replaceAll("(?<=\\d)\\s*([-+/*])\\s*(?=\\d)", " $1 ");
return expr.replaceAll(“(?使用正则表达式查找数字,然后用空格环绕:
string.replaceAll("\\d+", " $0 ").trim(); // trim in case numbers are first/last
我可以使用简单的字符串处理机制来实现这一点,但这仍然需要我至少5到7行代码。如果有人发布单行正则表达式解决方案,我会很高兴。我得到java.lang.IndexOutOfBoundsException:使用这些行时没有组1。抱歉,忘记了参数。请参见编辑。或者,使用$0而不使用参数。非常感谢我试图实现的最初功能是,如果用户忘记添加空格,那么检查用户是否添加空格的最佳方法是什么?如果用户忘记添加空格,我只需要添加空格them@NullPointerException使用我的第二种解决方案。此解决方案仅在缺少空格的运算符周围插入空格。编辑:现在为n规范化空间,在需要时添加,并消除多余的空间。我想我发现了一个错误。该解决方案消除了中间两个运算符之间的空白示例输出:输入中缀表达式2*3-10/4更正的中缀:2*3-10/4输入中缀表达式5+2*6-1更正的中缀:5+2*6-1输入中缀表达式2*3-10/4更正的中缀CTE中缀:2*3-10/4正如您所看到的,中间运算符周围没有添加空格。不过,其余的中缀效果很好。比仅用于数字的公认答案更优雅!