我知道这个
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
。