0

假设我有这个表达式I10I20I-3++应该给我 27。我似乎无法找到删除那些I的方法,或者它是否是字符串中的任何其他字母。此外,我必须想出一种方法来评估表达式。我尝试使用正则表达式,但没有运气:

public static String removeIs(String input)
{
    //String check = input.replaceAll("[^/+/-/*//^0-9/-]+", " ");
    String check = input.replaceAll("[^-+*/^0-9/-](?![^(]*\\))"," ");
    return check;
}
4

1 回答 1

1

查找任何非运算符非数字字符的表达式为:

[^0-9+\-\*\/]

您在 Q 下面的评论中说您正在编写计算器。请注意,您的字符串中有未知数量的数字和运算符,因此最好创建一个循环并遍历字符串并手动抓取数字和运算符以在您的计算器中使用,而不是使用正则表达式反向引用。顺便说一句:你为​​什么I用空格代替?字符串中的分隔符对您有什么影响吗?

很久以前,我创建了一个相当先进的基于正则表达式的 JS 代码解析器,从这次经验中我可以看出,创建一个用于一次解析所有内容的可怕表达式通常是个坏主意。

于 2013-02-23T10:11:22.343 回答