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

如何在 Java 中高效去除 Unicode 字符串中的变音符号?

Barbara Streisand
发布: 2024-12-01 15:36:14
原创
298 人浏览过

How Can I Efficiently Remove Diacritical Marks from Unicode Strings in Java?

从 Unicode 字符中删除变音符号

问题描述

变音符号,例如波形符、扬抑符、脱字符号、元音变音符和抑扬符,可以改变字符的发音。为了便于高效搜索和比较,可能有必要删除这些标记并获取字符的“简单”对应项。

解决方案

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板