我正在尝试打印任何无效的电子邮件地址。要无效,电子邮件地址不得包含@符号,句点或空格。我的代码是返回没有@符号或句点的电子邮件地址,但他们没有返回包含空格的电子邮件地址。
public static void print_emails(){
for (int i = 0; i < student.size(); i++) {
if (student.get(i).getEmail().contains("@") && student.get(i).getEmail().contains(".") && student.get(i).getEmail().contains("")){
System.out.println("Scanning Roster");
}
else if (student.get(i).getEmail().contains("\\s")){
System.out.println("Invalid email address, " + student.get(i).getEmail());
}
else {
System.out.println("Invalid email address, " + student.get(i).getEmail());
}
}
}
答案 0 :(得分:1)
更好的方法是将电子邮件字符串与正则表达式匹配。以下应该有效:
^[A-Za-z0-9+_.-]+@(.+)$
这是一个非常简单的,你可以越来越复杂,以满足您的需求。目前,这个确保:
1)允许使用A-Z和a-z字符
2)允许0-9个数字
3)电子邮件可能只包含点(。),短划线( - )和下划线(_)
同时允许@符号在正确的位置。
答案 1 :(得分:0)
contains()
期待CharSequence
。改为使用正则表达式:
else if (studentList.get(i).getEmail().matches(".*\\s.*"))
答案 2 :(得分:0)
您可以修改代码以包含此内容:
public static void print_invalid_emails()
{
for (int i = 0; i < studentList.size(); i++)
{
if (studentList.get(i).getEmail().contains("@") && studentList.get(i).getEmail().contains(".") && !studentList.get(i).getEmail().contains(" "))
{
System.out.println("Scanning Roster");
}
else
{
System.out.println("Invalid email address, " + studentList.get(i).getEmail());
}
}
}