【发布时间】:2013-10-29 01:01:26
【问题描述】:
我要求用户输入他/她的姓名。 我该怎么做才能不排除数字?
String name = " ";
System.out.println("Enter Name");
name = Keyboard.readString();
【问题讨论】:
-
你能告诉我什么是正则表达式吗?我是编程新手
我要求用户输入他/她的姓名。 我该怎么做才能不排除数字?
String name = " ";
System.out.println("Enter Name");
name = Keyboard.readString();
【问题讨论】:
使用正则表达式检查输入和循环以获得好的答案:
String name = "";
while (true) {
System.out.println("Enter Name");
name = Keyboard.readString();
if (name.matches("[a-zA-Z]+"))
break;
System.out.println("Invalid input. Enter letters only");
}
【讨论】:
matches 是否要求整个字符串匹配?如果没有,您需要锚定它(^ 和 $)
boolean numberOrNot = name.matches(".*\\d.*");
numberOrNot 将是 true 如果它的名字有任何数字,否则它将是 false。
regex 的意思是,正则表达式。
-?\\d+ 是一个正则表达式。
-?: 负号,可以没有也可以有一个\\d+:一位或多位数字但这是验证,我认为您不能对控制台进行限制。
【讨论】:
您不能让用户在输入时只在控制台中输入字符而不输入其他任何内容,但是您可以验证他的输入并在输入后检查它是否仅包含字母字符,如果无效,请用户再次输入他的数据。
要检查 String 是否仅包含字母字符,您可以遍历其所有字符并在其上使用 Character.isAlphabetic(character) 或仅使用 matches 和正则表达式,例如 userData.matches("\\p{IsAlphabetic}+");
Character.isAlphabetic 和 \\p{IsAlphabetic} 优于检查 a-zA-Z 范围,因为它也接受非英文字符,如 ą、ę。
【讨论】: