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

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

Barbara Streisand
リリース: 2024-12-17 05:17:24
オリジナル
946 人が閲覧しました

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

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