2013-10-25 53 views
0

我想檢查是否字符串包含操作如何檢查是否字符串包含在Java的任何運營商的

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++; 
          } 
        } 
      } 

上面的代碼可以得到總的沒有在字符串操作數使用,但有一些簡單的方法。

+1

操作或操作? –

+1

你想只是爲了至少一個存在或計算所有事件? – A4L

回答

2

您可以使用正則表達式對一行代碼執行相同的操作。

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

將所有需要的操作符放在括號中。

我現在無法測試上面的代碼,但是您可能必須使用反斜槓轉義某些運算符。

+0

更正了斜線,謝謝。但是這是什麼把他們放在角色課上呢? – Govardhan

+0

你的編輯把它們放在一個字符類(''[...]')中。 –

2

您可以使用正則表達式字符類找到任何字符的列表,例如:

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

[]表示一個字符類。在那之內,你必須用(因爲否則它看起來像字符類的末尾)帶有反斜槓,並且由於反斜槓在字符串文字中是特殊的,所以你需要兩個。同樣,你也必須在字符類中跳過-(除非它是第一個字符,但記住要做到這一點更容易)。我已經用上面的tickmarks標出了那些。

文檔:

1
嘗試

使用這些功能

String.contains() - 它檢查如果字符串包含一個指定char值序列 String.indexOf() - 它返回指定字符或子字符串的第一次出現的字符串內的索引(此方法有4個變體)

而不是檢查數組中的每個字符。

1

如果存儲「匹配」哈希表,您的查找效率會更高:

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

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

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

之前有一個缺失)在線1 – Aven

相關問題