如何检查String中是否包含全角字符

时间:2015-04-08 07:52:38

标签: java string character special-characters

有人可以建议我如何检查StringJava是否包含全角字符?全角的字符是特殊字符。

字符串中的全角字符:

abc@gmail.com

字符串中的半角字符:

abc@gmail.com

4 个答案:

答案 0 :(得分:2)

你可以比较UNICODE因为字母(a-z)的unicode是97-122,所以你可以很容易地在两者之间进行区分

String str="abc@gmail.com";
System.out.println((int)str.charAt(0));

表示输入

abc@gmail.com

输出

65345

答案 1 :(得分:2)

您可以尝试这样的事情:

public static final String FULL_WIDTH_CHARS = "AaBbCcDdEeFfGgHhIiJj"
                      + "KkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz";

public static boolean containsFullWidthChars(String str) {
    for(int i = 0; i < FULL_WIDTH_CHARS.length(); i++) {
        if(str.contains(String.valueOf(FULL_WIDTH_CHARS.charAt(i)))) {
            return true;
        }
    }
    return false;
}

答案 2 :(得分:2)

我不确定你是否正在寻找任何或所有,所以这里有两个功能:

public static boolean isAllFullWidth(String str) {
    for (char c : str.toCharArray())
      if ((c & 0xff00) != 0xff00)
        return false;
    return true;
}

public static boolean areAnyFullWidth(String str) {
    for (char c : str.toCharArray())
      if ((c & 0xff00) == 0xff00)
        return true;
    return false;
}

关于你的半宽'.'和可能的'_'。首先将它们剥离出来,然后更换一下:

String str="abc@gmail.com";

if (isAllFullWidth(str.replaceAll("[._]","")))
  //then apart from . and _, they are all full width

的正则表达式

或者,如果您想使用正则表达式进行测试,那么这是全宽的实际字符范围:

[\uFF01-\uFF5E]

所以方法如下:

public static boolean isAllFullWidth(String str) {
    return str.matches("[\\uff01-\\uff5E]*");
}

您可以将其他字符添加到其中,因此无需删除它们:

public static boolean isValidFullWidthEmail(String str) {
    return str.matches("[\\uff01-\\uff5E._]*");
}

答案 3 :(得分:0)

在这里使用正则表达式。 \ W用于检查非单词字符。

如果以下语句返回true,

str将包含全角字符:

boolean flag = str.matches(&#34; \\ W&#34;);