ホームページ >Java >&#&チュートリアル >Java で Unicode 文字列から発音区別符号を削除するにはどうすればよいですか?
Unicode 文字から発音区別符号を削除する
チルダ、ウムラウト、サーカムフレックスなどの発音区別符号は、文字の発音とスペルを変更する可能性があります。検索と比較を容易にするために、これらのマークを削除することが必要になる場合があります。 Java で Unicode 文字から発音区別符号を削除する方法は次のとおりです。
正規化形式 NFD と正規表現の使用
normalize(Normalizer.Form.NFD) メソッドは Unicode を分解します。文字列を基本文字と発音記号に変換します。これを、発音記号に一致する正規表現と組み合わせることで、文字列から発音記号を削除できます。
import java.util.regex.Pattern; public class DiacriticRemover { public static final Pattern DIACRITICS_PATTERN = Pattern.compile("[\p{InCombiningDiacriticalMarks}]"); public static String removeDiacritics(String str) { return DIACRITICS_PATTERN.matcher(str).replaceAll(""); } }
使用例:
String withDiacritics = "Björń"; String withoutDiacritics = DiacriticRemover.removeDiacritics(withDiacritics); System.out.println(withoutDiacritics); // Output: Bjorn
強化された文字列の簡略化
発音記号以外の特殊文字を処理するため。検索と比較に影響を与える可能性があるため、Google の ImmutableMap の使用と追加のクリーンアップ ラウンドを検討してください。
import com.google.common.collect.ImmutableMap; public class StringSimplifier { private static final ImmutableMap<String, String> NONDIACRITICS = ImmutableMap.<String, String>builder() // ... (define replacements here) .build(); public static String simplifiedString(String str) { return NONDIACRITICS.entrySet().stream() .reduce(str, (s, entry) -> s.replaceAll(entry.getKey(), entry.getValue()), String::concat); } }
使用例:
String withNonDiacritics = "Białystok"; String simplified = StringSimplifier.simplifiedString(withNonDiacritics); System.out.println(simplified); // Output: Bialystok
これらの手法を使用すると、次のことができます。検索機能と比較機能を向上させるために、発音記号を削除し、文字列を簡素化します。
以上がJava で Unicode 文字列から発音区別符号を削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。