变音符号,例如波形符、扬抑符、脱字符号、元音变音符和抑扬符,可以改变字符的发音。为了便于高效搜索和比较,可能有必要删除这些标记并获取字符的“简单”对应项。
利用 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中文网其他相关文章!