首页 >Java >java教程 >如何在 Java 中删除 Unicode 字符串中的变音符号?

如何在 Java 中删除 Unicode 字符串中的变音符号?

Barbara Streisand
Barbara Streisand原创
2024-12-17 05:17:24948浏览

How to Remove Diacritical Marks from Unicode Strings in Java?

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn