如何检查字符串是否包含java中的任何运算符

时间:2013-10-25 14:40:56

标签: java operators

我想检查字符串是否包含操作数

    char m='\0';
    char match[]={'(',')','=',';','{','}','[',']','+','- 
            ','*','/','&','!','%','^','|','<','>'};                                                                            
    for(int i =0; i<code.length(); i++)
    {
        m=code.charAt(i);
        for(int j=0;j<match.length;j++){
            if(m==match[j]){
                o++;
                            }
                     }
           }

上面的代码可以得到字符串中操作数使用的总数,但有一些简单的方法。

4 个答案:

答案 0 :(得分:2)

您可以使用正则表达式字符类来查找任何字符列表,例如:

// (See note below about these -++--++
//                              ||  ||
//                              vv  vv
if (stringToTest.match("[()=;{}[\\]+\\-*/&!%^|<>']")) {
    // It has at least one of them
}

[]表示字符类。在其中,你必须使用反斜杠转义](因为它看起来像是字符类的结尾),并且因为反斜杠在字符串文字中是特殊的,所以你需要两个。类似地,你也必须在一个字符类中转义-(除非它是第一个字符,但更容易记住这样做)。我已经突出显示了上面带有标记的那些。

文档:

答案 1 :(得分:2)

您可以使用正则表达式使用一行代码执行相同的操作。

if(code.matches("[,/!%<>]"))  sysout("There is Operator"); 

将所需的所有操作符放在括号中。

我现在无法测试上面的代码,但你可能不得不使用反斜杠来逃避一些操作符。

答案 2 :(得分:1)

尝试使用这些功能

String.contains() - 检查字符串是否包含指定的char值序列 String.indexOf() - 返回指定字符或子字符串第一次出现的字符串中的索引(此方法有4种变体)

而不是检查数组中的每个char。

答案 3 :(得分:1)

如果将“匹配”存储为哈希表,则查找效率会更高:

HashSet<Character> match = new HashSet<Character>(Arrays.asList('(',')','=',';','{','}','[',']','+','-','*','/','&','!','%','^','|','<','>');

for(int i =0; i < code.length(); i++) {

    if (match.contains(code.charAt(i)) {
        o++;
    }
}