Unicode 文字から発音記号 (チルダ、ウムラウトなど) を削除するには、次のアルゴリズムの採用を検討してください。
Java では、次のコードを利用します:
public static final Pattern DIACRITICS_AND_FRIENDS = Pattern.compile("[\p{InCombiningDiacriticalMarks}\p{IsLm}\p{IsSk}\u0591-\u05C7]+"); private static String stripDiacritics(String str) { str = Normalizer.normalize(str, Normalizer.Form.NFD); str = DIACRITICS_AND_FRIENDS.matcher(str).replaceAll(""); return str; }
例:
stripDiacritics("Björn") = Bjorn
より包括的なソリューションには、次のコードを含めます。非付加記号の特殊文字を処理するための 2 番目のクリーンアップ ステージ
public static final char DEFAULT_REPLACE_CHAR = '-'; public static final String DEFAULT_REPLACE = String.valueOf(DEFAULT_REPLACE_CHAR); private static final ImmutableMap<String, String> NONDIACRITICS = ImmutableMap.<String, String>builder() // ... [List of non-diacritic characters] public static String simplifiedString(String orig) { String str = orig; if (str == null) { return null; } str = stripDiacritics(str); str = stripNonDiacritics(str); if (str.length() == 0) { // ... } return str.toLowerCase(); } // ... [Continued implementation]
これらのアルゴリズムは、検索目的で効果的に発音記号を削除します。ただし、ビャウェゴストックの「ł」などの非付加記号の特殊文字には追加の処理が必要です。強化されたアルゴリズムは、これらの文字を最も近い同等の文字に置き換えようとします。
以上がJava の Unicode 文字列から発音記号を効率的に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。