将具有特殊unicode的文本转换为普通文本(java)
我有一个包含许多unicode(?)字符的文本,如下所示: 帕塞克0.02亿美元新泽西州 应该是:帕塞克,新泽西州 阿尔伯特W$002E\u巴尼 应该是:阿尔伯特w。巴尼 罗斯福高中0028Yonkers 002C纽约0029美元 应该是:罗斯福高中(扬克斯,纽约) 我在网上搜索了一下,发现有一大串这样的人物:将具有特殊unicode的文本转换为普通文本(java),java,regex,unicode,Java,Regex,Unicode,我有一个包含许多unicode(?)字符的文本,如下所示: 帕塞克0.02亿美元新泽西州 应该是:帕塞克,新泽西州 阿尔伯特W$002E\u巴尼 应该是:阿尔伯特w。巴尼 罗斯福高中0028Yonkers 002C纽约0029美元 应该是:罗斯福高中(扬克斯,纽约) 我在网上搜索了一下,发现有一大串这样的人物: 你知道有什么快速的方法可以用它们的原始字符替换这些字符吗?请注意,我不想一个接一个地替换这些字符(比如使用replaceAll)。相反,我想使用一个已经实现了这个功能的函数(可能是一个外
你知道有什么快速的方法可以用它们的原始字符替换这些字符吗?请注意,我不想一个接一个地替换这些字符(比如使用replaceAll)。相反,我想使用一个已经实现了这个功能的函数(可能是一个外部库)试试java的native2ascii工具。参考假设这些是UTF-16BE编码值,您可以使用解析值并转换为字符:
public static String parse(CharSequence csq) {
StringBuilder out = new StringBuilder();
Matcher matcher = Pattern.compile("\\$(\\p{XDigit}{4}+)").matcher(csq);
int last = 0;
while (matcher.find()) {
out.append(csq.subSequence(last, matcher.start()));
String hex = matcher.group(1);
char ch = (char) Integer.parseInt(hex, 16);
out.append(ch);
last = matcher.end();
}
out.append(csq.subSequence(last, csq.length()));
return out.toString();
}