我正在处理来自不同国家和语言的文本。有大量使用“宽”格式字符的文本。它们表面上看起来像标准的 ASCII 字符,但有一点不同的字体,并且它们周围有额外的空间。
目前,我循环遍历字符串的字符数组表示中的每个字符,测试字符是否在宽字符范围内,如果是,则将字符替换为其 ASCII 等效字符,然后转换回字符串。
public static String wideToShortChars(String s) {
char[] messagechars = s.toCharArray();
for (int i = 0; i < messagechars.length; i++) {
int thisChar = (int) messagechars[i];
if (thisChar >= 65280 && thisChar <= 65519) {
messagechars[i] = (char) (thisChar - 65248);
}
}
return new String(messagechars);
}
这似乎会很慢,我想使用 RegEx 会更快。我发现我可以使用\p{InHalfwidth_and_Fullwidth_Forms}
正则表达式中的术语来搜索这些字符。
我可以构建一个搜索这些宽字符并将它们替换为它们的 ASCII/标准等价物的正则表达式吗?我只想用字母、数字和通常的标点符号来做这件事。