我有一个文本,其中包含许多unicode(?)字符,如下所示:
passaic $ 002c新款球衣 应该是:passaic,new jersey
Albert_W $ 002E_Barney 应该是:albert w。巴尼
Roosevelt_High_School_ $ $ 0028Yonkers $ 002C_New_York〇〇二九 应该是:Roosevelt_High_School_(Yonkers,_New_York)
我在网上搜索了这些字符的大清单:http://colemak.com/pub/mac/wordherd_source.txt
你知道我可以用原始字符替换这些字符的快速方法吗?请注意,我不想逐个替换每个字符(比如使用replaceAll。)而是我想使用已经实现了这个的函数(可能是外部库)
答案 0 :(得分:0)
尝试使用java的native2ascii工具。请参阅http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/native2ascii.html
答案 1 :(得分:0)
假设这些是UTF-16BE编码值,您可以使用解析值并转换为 char :
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();
}