我知道这个

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

08-27 10:22