how check if String has Full width character in java

后端 未结 4 1637
失恋的感觉
失恋的感觉 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:20

    You can compare the UNICODE Since unicode for alphabets (a-z) is 97-122 , So you can easily diffrentiate between the two

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

    for Input

    abc@gmail.com
    

    Output

    65345
    
    0 讨论(0)
  • 2021-01-12 17:24

    use regular expression here. \W is used to check for non-word characters.

    str will contain full width character if following statement return true:

    boolean flag = str.matches("\\W");

    0 讨论(0)
  • 2021-01-12 17:35

    You can try something like this:

    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;
    }
    
    0 讨论(0)
  • 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._]*");
    }
    
    0 讨论(0)
提交回复
热议问题