0

わかりましたので、単純な電子メール検証アプリケーションを作成しようとしています。

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");
     }
4

3 に答える 3

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

indexOf実際のインデックスを気にしない場合は、他の文字列内の部分文字列の存在を確認するために使用しないでください。

一部の文字列に他の文字列が含まれているかどうかを知りたいだけの場合は、containsメソッドを使用してください-より簡単です

提案されているように、より良いのは次のとおりです。

if(mail.endsWith(".com") || mail.endsWith(".co.uk")) {
    //is valid
}
于 2013-03-14T23:07:37.480 に答える
1

正規表現、または次のようなサフィックスのコレクションを使用できます。

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);
}
于 2013-03-14T23:24:44.557 に答える
0

まあ、あなたのスニペットを働かせるには、それは

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");
}

一方、より柔軟なソリューションとして正規表現を試すことができます。それが役に立てば幸い

于 2013-03-14T23:20:29.270 に答える