3
日本語のひらがなとかなの多くは、濁点と濁点があります。
例:ははなっばかぱ(゛及び゜部品に気づく)Javaでの濁点/ハンダクテンを削除する(別名テンテン、ぱ→は)
質問:どのようにJavaで、文字列からこれらを削除するには?
たとえば、はばぱハバパ1aあア亜
ははははハハハ1aあア亜
になります。
パフォーマンスは重要です。
コンテキスト:コンテンツをレガシーシステムと照合します。
日本語のひらがなとかなの多くは、濁点と濁点があります。
例:ははなっばかぱ(゛及び゜部品に気づく)Javaでの濁点/ハンダクテンを削除する(別名テンテン、ぱ→は)
質問:どのようにJavaで、文字列からこれらを削除するには?
たとえば、はばぱハバパ1aあア亜
ははははハハハ1aあア亜
になります。
パフォーマンスは重要です。
コンテキスト:コンテンツをレガシーシステムと照合します。
(ハーン)ダクテンの文字は、かな漢字と結合記号に分解することができます。java.text
の場合、JavaはNormalizer
クラスです。
String decomposed = Normalizer.normalize(input, Normalizer.Form.NFD);
その後(ハン)を組み合わせ濁点マークが(少し速く私のテストで)例えばreplace
またはreplaceAll
、
String noVoicingMarks = decomposed.replace("\u3099", "").replace("\u309A", "");
かで除去することができる
String noVoicingMarks = decomposed.replaceAll("\u3099|\u309A", "");
べき私は多分後で文字列を "再構成"しますか?たとえば、(han)dakutensを含むStringは、他の特別なアクセントを持っていても同じままでなければなりません。ありがとう! :-) –
@ NicolasRaoulおそらく、それは分解されているかどうかにかかわらず同じ*見てはなりません。必要であれば、正規化形式Cでそれらを戻すことができます。そのため、NFC – harold
これはおそらく私が現在している問題です。結果のStringを定数Stringと照合しようとしていますが、まったく同じに見えますが、そのhexdumpは異なります。だから '文字列recomposed = Normalizer.normalize(noVoicingMarks、Normalizer.Form.NFC);'私は思いますか? –