繁体   English   中英

如何检查字符串在 java 中是否有全角字符

[英]how check if String has Full width character in java

谁能建议我如何检查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;
}

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

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”);

半角:1字节

全角:> 1 字节(2,3,4.. 字节)

-> 比较:字符串长度 == 字节长度

String strCheck = "abc@gmail.com";
if (str.length() != str.getBytes().length) {
    // is Full Width
} else {
    // is Half Width
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM