/**
* unicode转中文
*/
private static String unicodeDecode(String string) {
Pattern pattern = Pattern.compile("(\\\\u(\\p{XDigit}{4}))");
Matcher matcher = pattern.matcher(string);
char ch;
while (matcher.find()) {
ch = (char) Integer.parseInt(matcher.group(2), 16);
string = string.replace(""+matcher.group(1), ch + "");
// System.out.println("替换["+matcher.group(1)+"为["+ch+"]");
// 每次都拿新的来匹配,保证准确性
matcher = pattern.matcher(string);
}
return string;
}
对比网上的代码,发现matcher.find()每次都拿旧的字符串匹配,导致匹配重复数量众多。
所以对网上的进行优化,增加:
// 每次都拿新的来匹配,保证准确性
matcher = pattern.matcher(string);