我的应用程序从用户那里获取输入。一些亚洲用户输入的文本带有类似拉丁字符,但使用 Unicode 范围 U+FF01–FF5E 进行编码。当我尝试将此输入字符串与 ASCII 中的内容进行比较时,它们不相等(如预期的那样)。
这是维基百科关于字符范围的文章 http://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms
如何将该范围内的字符转换为 ASCII 等效字符?
任何帮助表示赞赏。
如果这些是您需要转换的唯一字符,则可以使用:
String convertLatinLikeToAscii(String text) {
char[] chars = text.toCharArray();
for (int i = 0; i < chars.length; i++) {
char c = chars[i];
if (c >= 0xff01 && c <= 0xff5e) {
// Map U+FF01 to U+0021 etc
chars[i] = (char) (c - (0xff01 - 0x21));
}
}
return new String(chars);
}