如何检查Java String是否包含GSM扩展字符(非Unicode)

时间:2013-06-05 12:54:52

标签: java string unicode gsm

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

1 个答案:

答案 0 :(得分:1)

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

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