在dot之后限制字符 - java

时间:2014-11-26 20:26:48

标签: java string-length limiting

嘿,所以我正在为学校做一个项目。 我们必须编写一个虚拟的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;
    }

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

3 个答案:

答案 0 :(得分: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。

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

这应该会有所帮助:

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

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