我试图写一个小的Java程序,将(使用扫描仪类)接受一个文件,该文件作为字符串返回,然后搜索该子串的任何实例开始与“电子邮件:”和结尾“埃杜”。会有此串的许多情况下,其中的每一个欲分析出到一个数组或一个新的文件。

我知道如何找到一个子,但我不知道怎么A)搜索字符串的所有实例和B)指定字符串的起点和终点。

有人可以帮我这个逻辑?

谢谢!

有帮助吗?

解决方案

这听起来像对正则表达式到我的情况下:

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电子邮件在那里...例如,如果你有“电子邮件:foo@bar.com电子邮件:一个@湾EDU”你会最终有一个匹配的‘foo@bar.com电邮:a@b.edu’

其他提示

您可以使用的indexOf()。我想你可以告诉它从哪里得搜索。因此,要找到你的情况下,“电子邮件:”:

while(index < input.size()){
  substringLocation = input.indexOf("Email:", index);
  // do something with substring
  index = substringLocation;
}
private static final Pattern EMAIL_PATTERN = Pattern.compile
    ("Email:(.*?\\.[a-z]*?[\\.[a-z]]*)"); 

将解决这个问题和ITT将任何电子邮件模式工作如abc.co.in xyz.com或test.fileserver.abc.co.bz域。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top