how check if String has Full width character in java

后端 未结 4 1639
失恋的感觉
失恋的感觉 2021-01-12 16:48

Can anyone suggest me how to check if a String contains full width characters in Java? Characters having full width are special characters.

4条回答
  •  时光说笑
    2021-01-12 17:42

    I'm not sure if you are looking for any or all, so here are functions for both:

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

    As for your half width '.' and possible '_'. Strip them out first with a replace maybe:

    String str="abc@gmail.com";
    
    if (isAllFullWidth(str.replaceAll("[._]","")))
      //then apart from . and _, they are all full width
    

    Regex

    Alternatively if you want to use a regex to test, then this is the actual character range for full width:

    [\uFF01-\uFF5E]
    

    So the method then looks like:

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

    You can add your other characters to it and so not need to strip them:

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

提交回复
热议问题