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

任何人都可以建议我如何检查一个String包含Java中的全角字符? 全角的字符是特殊字符。

字符串中的全角字符:

  abc@gmail.com 

字符串中的半角字符:

  abc@gmail.com 

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

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

输入

 abc@gmail.com 

产量

 65345 

你可以尝试这样的事情:

 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; } 

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

 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._]*"); } 

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

如果以下语句返回true,str将包含全角字符:

boolean flag = str.matches(“\\ W”);