许多日本平假名和假名都有dakuten和handakuten变体.
示例:は变成ば或ぱ(注意゛和゜部分)
问题:在Java中,如何从字符串中删除这些内容?
例如,我要はばぱハバパ1aあア亜成为はははハハハ1aあア亜.
性能很重要.
上下文:将内容与旧系统匹配.
解决方法:
带有(han)dakuten的字符可以分解为基本假名和组合标记,Java在java.text中具有用于该字符的Normalizer类.
String decomposed = Normalizer.normalize(input, Normalizer.Form.NFD);
然后,可以使用replace或replaceAll删除组合的(han)dakuten标记,例如
String noVoicingMarks = decomposed.replace("\u3099", "").replace("\u309A", "");
或者(在我的测试中快一点)
String noVoicingMarks = decomposed.replaceAll("\u3099|\u309A", "");