我的目标:我想检查一下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扩展,此外,当从GUI输入任何GSM扩展字符时,它们不会被识别为GSM。
答案 0 :(得分:1)
在正则表达式的方括号内,连字符是一个特殊字符,因此您需要将其作为GSM字符串中的"\\-"
进行转义。
GSM_EXTENDED字符串中的右括号(“]”)正在终止括号中的字符类,因此您需要将其转义为"\\]"
。