我想检查有效的firstName和lastName。这是我实现的代码,它在输入firstName和lastName的数字时返回false。但它允许用户包含字母或空格。
当我尝试输入数字时,下面的checkName函数仍然返回true:
public static boolean checkValidName(String name){
for(int i = 0; i < name.length(); ++i){
char ch = name.charAt(i);
if(!Character.isLetter(ch)){
return false;
}
if(!Character.isWhitespace(ch)){
return false;
}
return true;
}
return true;
}
如果我们想检查name
不包含任何数字(但可以包含特殊字符,如&
,%
,$
,*
等)的条件,
public static boolean checkValidName(String name) {
for (int i = 0; i < name.length(); ++i) {
char ch = name.charAt(i);
if (Character.isDigit(ch)) {
return false;
}
}
return true;
}
由于OP提到name
正在被验证,我认为通常名称不包含数字和特殊字符。如果我们想将name
限制为只能是字母和空格(没有数字和特殊字符,如&
,%
,$
,*
等),那么如果character
不是字母或空格,则需要返回false
。
public static boolean checkValidName(String name) {
for (int i = 0; i < name.length(); ++i) {
char ch = name.charAt(i);
// If the character is not a letter and not a whitespace, return false.
if (!Character.isLetter(ch) && !Character.isWhitespace(ch)) {
return false;
}
}
return true;
}
将字符串匹配到模式的更简洁的方法是使用regex。
在本例中:
return name.matches("[a-zA-Z]+ [a-zA-Z]+");
这个正则表达式匹配由一个空格分隔的两个单词(只有英文字母,至少一个字符)的字符串。当然,这可以根据您的需要进行调整。