我正在为Android计算器编写一个正则表达式。 " + / - *"对于非十进制值是可以的,但问题出在"。"。我如何检查"。" ?
这是我的正则表达式:
"(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)"
这是我的计算方法:
private double calc(String resultString) {
String[] result = resultString.split("(?<=[^\\\\d.])(?=\\\\d)|(?<=\\\\d)(?=[^\\\\d.])");
String op = null;
double res = 0;
for (String s : result) {
if (s.equals("+") || s.equals("-") || s.equals("*") || s.equals("/") ) {
op = s;
}
else if(s.equals(".")){
}
else {
if (op == null) {
res = Double.parseDouble(s);
} else {
if (op.equals("+")) {
res = res + Double.parseDouble(s);
} else if (op.equals("-")) {
res = res - Double.parseDouble(s);
} else if (op.equals("*")) {
res *= Double.parseDouble(s);
} else if (op.equals("/")) {
res /= Double.parseDouble(s);
}
}
}
}
return res;
}
答案 0 :(得分:0)
从.
简写中删除\D
,其中包含一个否定字符类[^\d.]
,该字符将匹配除数字和文字.
之外的所有字符(请注意{{1}不必在字符类中进行转义,以便将其解析为文字点):
.
请参阅regex demo
和online demo(在Java中):
"(?<=[^\\d.])(?=\\d)|(?<=\\d)(?=[^\\d.])"