2015-11-27 64 views
0

我有一個接受字符串的函數。適用於以下類型字符串的通用正則表達式

ignoreWords.contains(InString.toLowerCase()); 

我想這Instring在格式​​是沒有任何字符的字符串。但是我的InString可能會採用​​或",abc"的格式。現在,我處理得如下

ignoreWords.contains(text.toLowerCase().replaceAll(",",""))); 

但這Insting可以在格式".abc""abc.""(abc)"。我不想寫多replaceAll功能或寫入多個if語句來檢查InString是否包含,.

InString可以是一個下列格式",abc""abc,"".abc""abc."",abc,"".abc."",abc.",".abc,","(abc)"。 InString可能以這種格式出現的可能性很小,如",(abc)""(abc),""(abc)."".(abc)"",(abc),"".(abc)."

什麼是使用正則表達式編寫單個replaceAll調用的有效方式,該方法以簡短和簡單的方式提供解決方案?

回答

1

replaceAll需要一個正則表達式作爲第一個參數,所以你可以這樣做:

ignoreWords.contains(text.toLowerCase().replaceAll("[.(),]", "")); 

這將替換所有.(),用空字符串。

1

你甚至爲什麼要替換其他字符?

檢查它周圍的其他方法:

boolean shouldIgnore(String inString, List<String> ignoreWords){ 
    for(String ignoreWord:ignoreWords){ 
    if(inString.contains(ignoreWord)){ 
     return true; 
    } 
    } 
    return false; 
} 

這樣你檢查inString包含任何要被忽略的單詞沒有輸入字符串替換幹啥。

+0

我想返回instring.So如果我將返回類型設置爲String,並在if語句內部而不是返回true,如果我編寫爲if(inString.contains(ignoreWord)){inString.toLowerCase()。replaceAll (ignoreWord, 「」); },一旦循環完成,我將返回instring到調用函數。那麼它應該工作。 –

相關問題