我有一个线性表达式,我必须将其用于某些计算目的。但我无法通过在运营商的基础上分离来正确使用它。即我有一个表达
"c*(a+b)+(a-b)"
我必须从中提取c,(a + b),(ab)。我能够从那里分离c但是我不能分开(a + b)和(ab)。我这样做
String linearExp="c*(a+b)+(a-b)";
String leftOperators=null;
String rightOperators=null;
for(int i=0;i<linearExp.length();i++){
leftOperators=linearExp.substring(0,linearExp.lastIndexOf("*"));
rightOperators=linearExp.substring(linearExp.lastIndexOf("*")+1);
}
System.out.println(leftOperators);
System.out.println(rightOperators);
这就像c&amp; (a + b)+(a-b)。但我需要(a + b)&amp;(a-b)分开。有人请帮忙
答案 0 :(得分:0)
这完全基于您给定的表达式,不适用于嵌套括号。
使用正则表达式实现外观以分割运算符的一种方法。
String s = "c*(a+b)+(a-b)";
String[] parts = s.split("(?<=\\))[*+/-]|[*+/-](?=\\()");
System.out.println(Arrays.toString(parts)); //=> [c, (a+b), (a-b)]