2012-10-02 54 views
12

我有一個Java方法,它在一個短語內查找一個單詞,忽略該單詞的大小寫敏感性,並且如果它找到該單詞,那麼它將從該短語中刪除它。這個詞和短語可以是任何東西。它們是變體。這裏是我的代碼:「(?i)」不能與口音一起使用

private String removeWord(String phrase, String word) { 
    phrase = phrase.replaceAll("(?i)" + word , ""); 
    return phrase; 
} 

守得雲開完美的,除非這個詞有口音。例如,如果單詞是「álvarez」並且短語是「Álvarez短語」,那麼它將不起作用,因爲「(?i)」在這種情況下失敗。

有沒有辦法讓「(?i)」與重音字符一起工作?

回答

25

只需更換與(?IU) - 它會打開Unicode的不區分大小寫的匹配

+4

我比你更喜歡你。有+1 :) –

+0

@DavidGrant哦,謝謝 –

+0

@Konstantin ..簡單! ...謝謝:) – Brad

4

默認情況下,(?i)只能使用ASCII字符 - 有關詳細信息,請參閱Pattern.CASE_INSENSITIVE。你可以說國旗UNICODE_CASE結合在一起,像這樣:(?I)

phrase = Pattern.compile(word, UNICODE_CASE | CASE_INSENSITIVE).matcher(phrase).replaceAll(""); 
+0

頂級例子,我不工作。底部的例子呢。 –

+0

@DuncanJones:固定 - 謝謝。 –

+2

@David ..謝謝大衛。 +1爲您的康斯坦丁解決方案+1 :) ...良好的精神。 – Brad

相關問題