从 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中文网其他相关文章!