![](/img/trans.png)
[英]Determine each character of a string if it contains full width characters in 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.