我想检查字符串是否包含操作数
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++;
}
}
}
上面的代码可以得到字符串中操作数使用的总数,但有一些简单的方法。
答案 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++;
}
}