Sea*_*oyd 123
我认为你的问题与以下相同:
因此答案也是一样的:
String convertedString =
Normalizer
.normalize(input, Normalizer.Form.NFD)
.replaceAll("[^\\p{ASCII}]", "");
Run Code Online (Sandbox Code Playgroud)
看到
示例代码:
final String input = "T?ï? ?š â f???? Š?????";
System.out.println(
Normalizer
.normalize(input, Normalizer.Form.NFD)
.replaceAll("[^\\p{ASCII}]", "")
);
Run Code Online (Sandbox Code Playgroud)
输出:
这是一个时髦的字符串
Mic*_*rdt 10
您可以使用java.text.Normalizer单独的基本字母和变音符号,然后通过正则表达式删除后者:
public static String stripDiacriticas(String s) {
return Normalizer.normalize(s, Form.NFD)
.replaceAll("\\p{InCombiningDiacriticalMarks}+", "");
}
Run Code Online (Sandbox Code Playgroud)
首先 - 你不应该.这些符号具有特殊的语音特性,不应忽视.
转换它们的方法是创建一个Map包含每对的方法:
Map<Character, Character> map = new HashMap<Character, Character>();
map.put('á', 'a');
map.put('é', 'e');
//etc..
Run Code Online (Sandbox Code Playgroud)
然后循环字符串中的字符,通过调用创建一个新字符串 map.get(currentChar)
| 归档时间: |
|
| 查看次数: |
46124 次 |
| 最近记录: |