1

嘿,所以我正在为学校做一个项目。我们必须编写一个虚拟ATM机。您必须使用学生邮件登录。

我的问题是:如何限制点(。)之后的字符长度?

public boolean validUsername(String username) {
        Boolean oneAT = false;
        for (int i=0; i < username.length(); i++) {
            if (username.contains("@") && username.contains(".") &&{
                oneAT = true;
            }
        }

        return oneAT;
    }

该函数检查输入的用户名是否包含 @ 和 .(点)。有没有办法将点后的字符长度限制为三个?否则用户可以写 johndoe@johndoemail.tugfksdoew

4

3 回答 3

2

使用正则表达式验证用户名更容易

public boolean validUsername(String username) {
    Pattern pattern = Pattern.compile("^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$");
    Matcher matcher = pattern.matcher(username);
    return matcher.matches();
}

该表达式验证用户名是否是有效的电子邮件地址,如果是则返回 true。

于 2014-11-26T20:32:13.647 回答
0

要回答具体问题,您可以通过检查点后子字符串的大小来限制大小(假设字符串中只有点):

afterDot = username.substring(username.indexOf("."))

但正如 ZouZou 所说,您应该正确验证您的电子邮件地址(还有其他几项需要检查)。看看这里的例子: http ://examples.javacodegeeks.com/core-java/util/regex/matcher/validate-email-address-with-java-regular-expression-example/

于 2014-11-26T20:33:16.893 回答
0

这应该会有所帮助:

if (username.contains("@") && username.contains(".") && ((username.length() - username.lastIndexOf(".") <= 3)) {

本质上,它检查字符串长度和最后出现的点的差异是否小于或等于 3。这也处理像 john.doe@yahoo.com 这样的电子邮件。

于 2014-11-26T20:38:48.370 回答