0

我的目标:我想检查一个 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。

4

1 回答 1

1

在正则表达式的方括号内,连字符是一个特殊字符,因此您需要像"\\-"在 GSM 字符串中一样对其进行转义。

GSM_EXTENDED 字符串中的右括号(“]”)终止了括号中的字符类,因此您需要将其转义为"\\]".

于 2013-06-05T14:01:50.807 回答