【问题标题】:Find multiple strings inside of another string在另一个字符串中查找多个字符串
【发布时间】:2013-03-14 22:59:34
【问题描述】:

好的,我正在尝试创建一个简单的电子邮件验证应用程序。

我被困在一个特定的位上,我需要在 1 个字符串中简单地找到 2 个字符串。我很想知道电子​​邮件中是否有 .com 或 .co.uk。到目前为止,我只是为了检查.com。我到处寻找,找不到解决方案。我试过做.indexof(dotCom && dotUK),但没用。

所以只是需要它,所以说“.com”或“.co.uk”

     String dotCom = ".com";
     String dotUK = ".co.uk";

     rest = user_email.indexOf( dotCom);

     if (rest== -1){
        System.out.println("Invalid email address. Must contain .com or .co.uk");
     }else{
        System.out.println("Valid email address");
     }

【问题讨论】:

  • 您有没有想过使用正则表达式来匹配有效的电子邮件模式?
  • 如果他从两个域扩展时,正则表达式将很有用。对于这种情况(jsut 两个域),正则表达式使问题过于复杂。

标签: java string validation if-statement


【解决方案1】:
if(mail.contains(".com") || mail.contains(".co.uk")) {
    //is valid
}

如果您不关心它的实际索引,请不要使用indexOf 检查其他字符串中是否存在子字符串。

如果您只想知道某个字符串是否包含其他字符串,请使用contains 方法 - 更直接

按照建议,最好是:

if(mail.endsWith(".com") || mail.endsWith(".co.uk")) {
    //is valid
}

【讨论】:

  • 假设这些电子邮件是有效的,它们总是以这些结尾,所以我建议用 endWith 而不是 contains
  • 我尝试了您建议的包含代码,但出现错误“无法取消引用 int”:s
  • @user2131803 发布你的完整代码 - 你一定做错了什么:)
【解决方案2】:

你可以使用一个正则表达式,或者像这样的后缀集合:

private static boolean matches(final String      mail,
                               final String ... suffixes)
{
    String match;

    match = null;

    for(final String suffix : suffixes)
    {
        if(mail.endsWith(suffix))
        {
            match = suffix;
            break;
        }
    }

    // or return (match); if you want to know the type.
    return (match != null);
}

【讨论】:

    【解决方案3】:

    好吧,让工作成为你的sn-p,那就是

    if (user_email.indexOf( dotCom) == -1 && user_email.indexOf( dotUK) == -1){
     System.out.println("Invalid email address. Must contain .com or .co.uk");
    
     }
      else {
        System.out.println("Valid email address");
    }
    

    另一方面,您可以尝试Regular expressions 以获得更灵活的解决方案。 希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2013-11-19
      • 2022-06-17
      • 2021-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多