チルダ、サーカムフレックス、キャレット、ウムラウト、カロンなどの発音区別符号は、変更される可能性があります文字の発音。効率的な検索と比較を容易にするために、これらのマークを削除し、対応する文字の「単純な」文字を取得する必要がある場合があります。
Unicode 正規化と正規表現を利用する、次の Java 実装効果的に発音記号を削除します:
import java.text.Normalizer; import java.util.regex.Pattern; public class DiacriticStripper { private static final Pattern DIACRITICS_PATTERN = Pattern.compile("[\p{InCombiningDiacriticalMarks}\p{IsLm}\p{IsSk}\u0591-\u05C7]+"); public static String stripDiacritics(String input) { String normalizedInput = Normalizer.normalize(input, Normalizer.Form.NFD); return DIACRITICS_PATTERN.matcher(normalizedInput).replaceAll(""); } }
たとえば、入力文字列"ńƹňñṅņṇṋṉ̈ɲƞᶇɳŠ" は "n" に変換されます。
提供されるソリューションは、発音区別記号に特に対処します。追加の非付加特殊文字を処理する必要がある場合は、より包括的な文字列簡略化メソッドを使用できます。
import java.text.Normalizer; import java.util.regex.Pattern; public class StringSimplifier { private static final Pattern DIACRITICS_PATTERN = Pattern.compile("[\p{InCombiningDiacriticalMarks}\p{IsLm}\p{IsSk}\u0591-\u05C7]+"); public static String simplify(String input) { String normalizedInput = Normalizer.normalize(input, Normalizer.Form.NFD); String diacriticStripped = DIACRITICS_PATTERN.matcher(normalizedInput).replaceAll(""); // Replace additional non-diacritic special characters using a custom mapping // ... return simplifiedString.toLowerCase(); } }
このメソッドは、より広範囲の文字を考慮することで、より包括的な文字列簡略化プロセスを提供します。
以上がJava で Unicode 文字列から発音区別符号を効率的に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。