java - 如何从Java中的字符串中删除尖音符号?

标签 java string kotlin diacritics

我知道这个

public static String stripAccents(String s) {
    s = Normalizer.normalize(s, Normalizer.Form.NFD);
    s = s.replaceAll("[\\p{InCombiningDiacriticalMarks}]", "");
    return s;
}
但这不是我想要的方式。它改变了文字的感觉
stripAccents("йод,ëлка,wäre") //иод,елка,ware
我只想删除重音
stripAccents("café") //cafe

最佳答案

仅针对尖锐的口音:

s = Normalizer.normalize(s, Normalizer.Form.NFD); // Decompose
s = s.replace("\u0301", ""); // Combining acute accent (´)
s = Normalizer.normalize(s, Normalizer.Form.NFC); // Compose again
组成最短,并且通常用字体更好地表示。
即使没有正则表达式,也可以删除零长度的重音符号。
对于意大利咖啡馆,重音符,请使用\u0300

关于java - 如何从Java中的字符串中删除尖音符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64261318/

相关文章:

android - 更新用户个人资料照片不会使用 currentUser.photoUrl 进行更新

java - 自定义 JSpinner

java - 在 Android 中使用动态 R 字符串

android - Fresh kotlin android项目配置错误

c# - 字符串转换为日期时间

python - 从字符串 python 中删除撇号

java - CSV 文件在压缩后被更改为字节数组

Java邻接表实现有向加权图

java - AES 256 解密 - IV 可以安全共享吗?

java - 在java中使用keyAdapter和keyEvent时出错