ホームページ > Java > &#&チュートリアル > Java の Unicode 文字列から発音記号を効率的に削除するにはどうすればよいですか?

Java の Unicode 文字列から発音記号を効率的に削除するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-11 01:23:10
オリジナル
559 人が閲覧しました

How Can I Efficiently Remove Diacritics from Unicode Strings in Java?

Unicode 文字から発音記号を削除する

Unicode 文字から発音記号 (チルダ、ウムラウトなど) を削除するには、次のアルゴリズムの採用を検討してください。

ジャワアルゴリズム

Java では、次のコードを利用します:

public static final Pattern DIACRITICS_AND_FRIENDS = Pattern.compile("[\p{InCombiningDiacriticalMarks}\p{IsLm}\p{IsSk}\u0591-\u05C7]+");

private static String stripDiacritics(String str) {
    str = Normalizer.normalize(str, Normalizer.Form.NFD);
    str = DIACRITICS_AND_FRIENDS.matcher(str).replaceAll("");
    return str;
}
ログイン後にコピー

例:

stripDiacritics("Björn")  = Bjorn
ログイン後にコピー

拡張アルゴリズム

より包括的なソリューションには、次のコードを含めます。非付加記号の特殊文字を処理するための 2 番目のクリーンアップ ステージ

public static final char DEFAULT_REPLACE_CHAR = '-';
public static final String DEFAULT_REPLACE = String.valueOf(DEFAULT_REPLACE_CHAR);
private static final ImmutableMap<String, String> NONDIACRITICS = ImmutableMap.<String, String>builder()
        // ... [List of non-diacritic characters]

public static String simplifiedString(String orig) {
    String str = orig;
    if (str == null) {
        return null;
    }
    str = stripDiacritics(str);
    str = stripNonDiacritics(str);
    if (str.length() == 0) {
        // ... 
    }
    return str.toLowerCase();
}

// ... [Continued implementation]
ログイン後にコピー

適用性と制限

これらのアルゴリズムは、検索目的で効果的に発音記号を削除します。ただし、ビャウェゴストックの「ł」などの非付加記号の特殊文字には追加の処理が必要です。強化されたアルゴリズムは、これらの文字を最も近い同等の文字に置き換えようとします。

以上がJava の Unicode 文字列から発音記号を効率的に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート