让我说我有这个表达式I10I20I-3++
应该给我27.我似乎无法找到一种方法来删除那些I
,或者是否有任何其他来自串。另外,我必须找出一种方法来评估表达式。我尝试使用正则表达式,但没有运气:
public static String removeIs(String input)
{
//String check = input.replaceAll("[^/+/-/*//^0-9/-]+", " ");
String check = input.replaceAll("[^-+*/^0-9/-](?![^(]*\\))"," ");
return check;
}
答案 0 :(得分:1)
查找任何非运算符非数字字符的表达式为:
[^0-9+\-\*\/]
你在Q下面的评论中说你正在写计算器。请注意,字符串中的数字和运算符数量未知,因此最好进行循环并迭代字符串并手动抓取数字和运算符以便在计算器中使用而不是使用正则表达式反向引用。顺便说一句:你为什么用空格替换I
?你对字符串中的分隔符有什么影响吗?
我很久以前就已经创建了一个非常高级的基于正则表达式的JS代码解析器,从这个经验我可以看出,为一次解析所有内容创建一个怪异的表达式通常是个坏主意。