java - 删除 Java 中的 dakuten/handakuten(又名十-十,ぱ→は)

标签 java converter diacritics cjk unicode-string

许多日语平假名和假名都有 dakuten 和 handakuten 变体。
示例:ha 变成 ば 或 ぱ(注意 ゛ 和 ₩ 部分)

问题:如何在 Java 中从字符串中删除这些?

例如,我想让はばぱハパ1aあア亜变成ハハハハ1aあア亜

性能很重要。

上下文:将内容与遗留系统相匹配。

最佳答案

带(汉)打天的字符可以分解为假名和组合标记,Java 在java.text 中有Normalizer 类。

String decomposed = Normalizer.normalize(input, Normalizer.Form.NFD);

然后可以使用 replacereplaceAll 删除组合 (han)dakuten 标记,例如

String noVoicingMarks = decomposed.replace("\u3099", "").replace("\u309A", "");

或者(在我的测试中快一点)

String noVoicingMarks = decomposed.replaceAll("\u3099|\u309A", "");

关于java - 删除 Java 中的 dakuten/handakuten(又名十-十,ぱ→は),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44438261/

相关文章:

java - Morphia List<Map<String,Object>>> 在查找操作中返回嵌入式元素不是 DBObject

java - 如何从本地连接的 JNDI 查找 DomainRuntimeServiceMBean?

java - 如何在不将其加载到内存的情况下解析巨大的 JSON 文件

python - pandas.read_csv 中的 dtype 和转换器有什么区别?

java - JDOM 使用变音符号解析 XML

php - InnoDB MySQL 表中的重音不敏感搜索!

java - 在不使用 if/else 语句的情况下将输出限制为某个整数的简单方法?

javascript - 将 ISO8601 日期转换为纪元格式(unix 时间戳)

c# - 开源 C++ 到 C# 编译器/转换器

PHP – 为什么有些元音变音字符显示,而另一些则不显示?