2012-10-02 6 views
12

単語の大文字小文字の区別を無視してフレーズ内の単語を探し、単語を見つけたらフレーズから除外するJavaメソッドがあります。単語とフレーズは何でもかまいません。彼らは変種です。ここに私のコード:"(?i)"はアクセントでは機能しません

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

単語がアクセントを持っていない限り、完璧に動作します。たとえば、単語が "álvarez"であり、フレーズが "Álvarezphrase"である場合、 "(?i)"はその場合には機能しません。

「(?i)」をアクセント付き文字で使用する方法はありますか?

答えて

25

だけ交換してください(IU?)と - それは

+4

私はあなたのものが私のものよりも好きです。 +1を持っている: –

+0

@DavidGrantああ、ありがとう –

+0

@コンスタンチン..どのように簡単です! ...ありがとう:) – Brad

4

デフォルトでは、(?i)はASCII文字でのみ機能します。詳細はPattern.CASE_INSENSITIVEを参照してください。あなたはそのように一緒にUNICODE_CASEでそのフラグを組み合わせることができます

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

トップの例をマッチングが私のために動作しませんUnicodeの大文字と小文字を区別しないがオンになります(私?)。下の例はそうです。 –

+0

@DuncanJones:修正済み - ありがとうございます。 –

+2

@David .. Davidに感謝します。 +1コンスタンチンの解決のためのあなたの+1 :) ...良い精神。 – Brad

関連する問題