判断字符串中只包含字母和数字

来源:互联网 发布:绝对争锋网络剧 编辑:程序博客网 时间:2024/05/16 12:49

最近做一个小小的项目,有输入用户名一项,要求只能输入字母和数字。

在用户输入用户名后,要做一个关于用户名的合法判断:只包含字母和数字。

一开始以为这个超级简单啊,想都没想就直接使用了Java API中CharacterisLetterOrDigit方法。以为什么问题都没有。

使用的是Character.isLetterOrDigit方法:

private boolean isLetterOrNumber(String string) {boolean flag = false;for (int i = 0; i < string.length(); i++) {if (Character.isLetterOrDigit(string.charAt(i))) {flag = true;} else {flag = false;return flag;}}return flag;}

结果发现输入中文字符的时候,也返回时true。例如,输入"惊呆了",返回true。

在进行追踪时,得到string.charAt(0) = 惊 ;然后在isLetterOrDigit中返回时,为true。

由于之前没有了解过,一下就呆住了。

后面了解到,由于Java提供了对Unicode的支持,因此中文也是Letter。

所以,使用Character.isLetter和Character.isLetterOrDigit方法的要注意啦,一不小心就掉进陷阱啦。

最后改为判断字符串中是否只含有大写字母小写字母和数字,解决问题。

private boolean isLetterOrDigits(String string) {boolean flag = false;for (int i = 0; i < string.length(); i++) {if (Character.isLowerCase(string.charAt(i))|| Character.isUpperCase(string.charAt(i))|| Character.isDigit(string.charAt(i))) {flag = true;} else {flag = false;return flag;}}return flag;}




0 0
原创粉丝点击