Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何检查Java字符串是否包含GSM扩展字符(非Unicode)_Java_String_Unicode_Gsm - Fatal编程技术网

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

如何检查Java字符串是否包含GSM扩展字符(非Unicode),java,string,unicode,gsm,Java,String,Unicode,Gsm,我的目标:我想检查Java字符串是否包含来自GSM扩展的字符。现有代码成功地检查了GSM字符,但我很难掌握如何检查GSM扩展字符,如“[”和“]” 我的代码: private static final String GSM_EXTENDED = "\u000c^{}\\[~]|\u20ac"; public static boolean isUnicode(String input) { return !((input.matches('[' + GSM + "]*"))

我的目标:我想检查Java字符串是否包含来自GSM扩展的字符。现有代码成功地检查了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。

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


GSM\U扩展字符串中的结束括号(“])正在终止带括号的字符类,因此您需要将其转义为
“\\]”

您不能像其他字符一样使用unicode id吗\u005B和\u005DHi Djon。如果我尝试将GSM_扩展字符串设置为“\u005B\u005D”,那么当我的isUnicode()方法运行时,我会得到。。。目标VM中发生异常:索引4[]]*附近未关闭的字符类啊!可能input.matches()的字符串参数需要\字符来转义括号字符?\\\u005B\\\u005D可用于此方法。Hi VGR。啊,是的,我想这就是为什么我的单元测试中没有识别“]”。但是,在我的GUI中键入时,仍然无法检测到GSM_扩展字符。啊,这是您的答案和我的isUnicode()方法的逻辑错误的组合。:)