在Java中使用for循环查找并打印具有空白字符的字符串

时间:2016-02-16 16:21:05

标签: java loops for-loop whitespace

我正在尝试打印任何无效的电子邮件地址。要无效,电子邮件地址不得包含@符号,句点或空格。我的代码是返回没有@符号或句点的电子邮件地址,但他们没有返回包含空格的电子邮件地址。

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());

        }

    }

}

3 个答案:

答案 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());
        }
    }
}