如何检查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”);