2012-10-02 58 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

相关问题