1

(Scannerクラスを使用して)ファイルを受け入れ、ファイルを文字列として返し、その文字列で「Email:」で始まり「.edu」で終わる部分文字列のインスタンスを検索する小さなJavaプログラムを作成しようとしています。 "。この部分文字列には多くのインスタンスがあり、それぞれを解析して配列または新しいファイルにします。

サブストリングを見つける方法は知っていますが、A)サブストリングのすべてのインスタンスを検索し、B)サブストリングの開始と終了を指定する方法がわかりません。

誰かがこのロジックで私を助けることができますか?

ありがとう!

4

3 に答える 3

2

indexOf() を使用できます。どこから検索するかも教えていただけると思います。"Email:" のインスタンスを見つけるには:

while(index < input.size()){
  substringLocation = input.indexOf("Email:", index);
  // do something with substring
  index = substringLocation;
}
于 2010-02-05T08:09:55.347 に答える
1
private static final Pattern EMAIL_PATTERN = Pattern.compile
    ("Email:(.*?\\.[a-z]*?[\\.[a-z]]*)"); 

問題を解決し、それはabc.co.inxyz.comやtest.fileserver.abc.co.bzドメインなどの任意の電子メールパターンで機能します。

于 2011-08-31T08:45:27.067 に答える
1

これは、正規表現の場合のように思えます。

import java.util.regex.*;

public class Test
{
    private static final Pattern EMAIL_PATTERN = Pattern.compile
        ("Email:(.*?\\.edu)");

    public static void main(String[] args)
    {
        String testString = "FooEmail:jjj@xyz.edu Bar Email:mmm@abc.edu Baz";

        printEmails(testString);
    }

    public static void printEmails(String input)
    {
        Matcher matcher = EMAIL_PATTERN.matcher(input);
        while (matcher.find())
        {
            System.out.println(matcher.group(1));
        }
    }
}

そこに電子メール以外 のものが含まれていると、奇妙な結果が得られることに注意してください.edu...たとえば、「Email: foo@bar.com Email: a@b.edu」がある場合、次の一致になります"foo@bar.com メール: a@b.edu".

于 2010-02-05T08:23:48.140 に答える