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

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

Barbara Streisand
リリース: 2024-12-01 15:36:14
オリジナル
247 人が閲覧しました

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 中国語 Web サイトの他の関連記事を参照してください。

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