我正在尝试删除诸如a-z
or *
、/
、+
、-
等字符之前的数字,然后删除该字符之后但在不同字符之前的任何数字。这就是我所拥有的。
s= s.replaceAll("(\\d+)", "");
s= s.replace("*", r.toString());
s
我需要读取的字符串在哪里,并且r
是操作的结果。
*
是任意的。它可以是任何字符。前面提到过
这样做的问题是它删除了字符串中的每个数字。
如果我要使用以下输入迭代一次:
26 + 4 - 2
程序返回这个:
30 -
它删除所有三个数字,然后将“+”替换为 30。
我想将其更改为类似于此(一次迭代):
26 + 4 - 2
第一个 RegEx 将删除第一组数字
+ 4 - 2
第二个将删除运算符之后的数字,但在下一个运算符之前
+ - 2
下一条语句将用表达式的结果替换运算符
30 - 2
对于正弦、余弦等其他函数的问题,我也希望如此。
注意:正弦是'a'
“sin pi”与“a pi”相同
一次迭代后,它应该看起来像
a pi + 2
a + 2
0 + 2
这是代码示例。
这是乘法“案例”
case '*':
{
int m = n + 1;
while (m < result.length){
if (result[m] != '*' && result[m] != '/' && result[m] != '+' && result[m] != '-'){ //checks the item to see if it is numeric
char ch2 = result[m]; //makes the number a character
number3 += new String(new char[]{ch2}); //combines the character into a string. For example: '2' + '3' = "23".
++m;}
else {
break;
}}
resultNumber = (Double.parseDouble(number2) * Double.parseDouble(number3)); //"number2" holds the value of the numbers before the operator. Example: This number ----> "3" '*' "23"
equation = equation.replaceAll("(\\d+)", ""); // <---- Line I pulled out earlier that I want to change.
equation = equation.replace("*", resultNumber.toString()); // <----- Line I pulled out earlier
result = equation.toCharArray();
number3 = ""; //erases any number held
number2 = ""; //erases any number held
++n;
break;
}