【问题标题】:limiting characters after dot - java点后限制字符 - java
【发布时间】:2015-01-25 07:39:09
【问题描述】:

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

【问题讨论】:

  • 好吧,用户也可以写@johndoe.johndoe,这也不是一个有效的地址。捕获电子邮件地址的格式比这要复杂一些。
  • 这将是使用regular expression 的好地方。
  • 请注意,有 / 将是超过 3 个字符的顶级域。见en.wikipedia.org/wiki/…
  • @Obicere 唯一的问题是真正有效电子邮件的正则表达式非常复杂。我很确定这超出了学生的范围。 OP:你的作业中是否有关于什么是有效电子邮件的具体说明?有效的电子邮件包括 john@somewhere.nza.b@john-doe.namemyname@mailserver.harvard-uni.edu 之类的东西,所以三个字母不会起作用。别介意更复杂的电子邮件规则,它允许在@ 左侧出现非常奇怪的东西。

标签: java string-length limiting


【解决方案1】:

这应该会有所帮助:

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

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

      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。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-02-13
        • 2016-09-13
        • 1970-01-01
        • 1970-01-01
        • 2015-10-29
        • 1970-01-01
        • 2016-05-29
        • 2018-03-09
        相关资源
        最近更新 更多