12

単語の大文字と小文字の区別を無視してフレーズ内の単語を検索するJavaメソッドがあり、単語が見つかった場合はフレーズから削除します。単語とフレーズは何でもかまいません。それらは変種です。これが私のコードです:

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

単語にアクセントがない限り、物事は完璧に機能します。たとえば、単語が「アルバレス」でフレーズが「アルバレス フレーズ」の場合、「(?i)」が機能しないため機能しません。

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

4

2 に答える 2

26

(?i) を (?iu) に置き換えるだけで、Unicode の大文字と小文字を区別しないマッチングが有効になります

于 2012-10-02T11:24:41.893 に答える
4

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

phrase = Pattern.compile(word, UNICODE_CASE | CASE_INSENSITIVE).matcher(phrase).replaceAll("");
于 2012-10-02T11:21:34.750 に答える