我正在为学校做作业,需要建立一个学生班。构造函数将收到一个String,“学生名”。我需要验证用户给定的字符串是否只包含来自a-z,A-Z和数字0-9的字母。
从在线查看这是我找到的
boolean ans = true;
String str = ("Maor Rocky");
Pattern pattern = Pattern.compile("[A-Za-z0-9]\\w+");
Matcher matcher = pattern.matcher(str);
System.out.println(matcher.group());
if (!str.matches("[a-zA-Z0-9//s+]"))
ans = false;
System.out.println(ans);
我知道它遗漏了一些东西,但我还没有掌握模式和匹配器的想法。
答案 0 :(得分:0)
如果你有一个类型为String的变量学生将持有学生姓名,那么简单的检查是这样的(这里不需要使用Pattern或Matcher类):
String student = scanner.next();
if (student.matches("[\\w]*"))
//do something for valid username
else
//do something for invalid username
或者每个初学者都这样做:
String student = scanner.next();
for (int i = 0; i < student.length(); i++) {
if (!Character.isLetterOrDigit(student.charAt(i)))
//do something for invalid username;
}
答案 1 :(得分:0)
你需要这样的东西:
public class Student {
private String name;
public Student(String name) throws IllegalArgumentException {
if (!name.matches("[\\w]*")) {
throw new IllegalArgumentException("name should contain only alphanumeric chars.");
}
this.name = name;
}
public String getName() {
return name;
}
}
答案 2 :(得分:0)
要了解Matcher的用法,您应该看到This link
在此示例中,Matcher和Pattern对象没有执行任何操作,因为您正在使用与regexp一起使用的String方法。如果你想使用匹配器,你会看起来像这样
if(matcher.matches())
ans=false;
答案 3 :(得分:0)
感谢每一个人,这是我编写的代码并且有效:
boolean ans = true;
if (!name.matches("^[a-zA-Z0-9 ]+$")) {
ans = false;