【发布时间】:2013-06-05 12:54:52
【问题描述】:
我的目标:我想检查一个 Java 字符串是否包含来自 GSM Extended 的字符。现有代码成功检查了 GSM 字符,但我很难掌握如何检查 GSM 扩展字符,例如“[”和“]”。
我的代码:
private static final String GSM_EXTENDED = "\u000c^{}\\[~]|\u20ac";
public static boolean isUnicode(String input) {
return !((input.matches('[' + GSM + "]*")) || (input.matches('[' + GSM_EXTENDED + "]*")));
}
结果:我的单元测试无法将 ']' 识别为 GSM Extended,此外,当从 GUI 输入任何 GSM Extended 字符时,它们不会被识别为 GSM。 p>
【问题讨论】:
-
你不能像其他人一样使用 unicode id 吗? \u005B 和 \u005D
-
你好 Djon。如果我尝试将 GSM_EXTENDED 字符串设置为“\u005B\u005D”,那么当我的 isUnicode() 方法运行时,我得到......目标 VM 中发生异常:索引 4 [[]]*附近的未关闭字符类*
-
啊!也许 input.matches() 的 String 参数需要 \ 字符来转义括号字符?
-
\\\u005B\\\u005D 可用于此方法。