0

文字列にオペランドが含まれているかどうかを確認したかった

    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

4 に答える 4

2

正規表現文字クラスを使用して、文字のリストのいずれかを見つけることができます。次に例を示します。

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

[とは]文字クラスを示します。その中で、]バックスラッシュでエスケープする必要があります (文字クラスの終わりのように見えるため)。バックスラッシュは文字列リテラルでは特殊なので、2 つ必要です。同様に、文字クラス内でもエスケープする必要があります-(それが最初の文字でない限り、それを行うことを覚えておく方が簡単です)。上に目盛りが付いているものを強調表示しました。

ドキュメント:

于 2013-10-25T14:44:23.847 に答える
1

「一致」をハッシュ テーブルとして保存すると、ルックアップがより効率的になります。

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

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

    if (match.contains(code.charAt(i)) {
        o++;
    }
}
于 2013-10-25T14:51:08.520 に答える