首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Java从字符串中解析子字符串的许多实例

Java从字符串中解析子字符串的许多实例
EN

Stack Overflow用户
提问于 2010-02-05 16:06:13
回答 3查看 2.2K关注 0票数 1

我正在尝试编写一个小的java程序,它将接受一个文件(使用Scanner类),将文件作为字符串返回,然后在该字符串中搜索以"Email:“开头并以".edu”结尾的任何子字符串的实例。该子字符串将有许多实例,我希望将每个实例解析为一个数组或一个新文件。

我知道如何查找子串,但我不知道如何A)搜索子串的所有实例,以及B)指定子串的开始和结束。

有人能帮我解决这个逻辑吗?

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-02-05 16:23:48

对我来说,这听起来像是正则表达式的情况:

代码语言:javascript
代码运行次数:0
运行
复制
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 Email: a@b.edu”。

票数 1
EN

Stack Overflow用户

发布于 2010-02-05 16:09:55

您可以使用indexOf()。我想你也可以告诉它从哪里开始搜索。因此,要找到“Email:”的实例:

代码语言:javascript
代码运行次数:0
运行
复制
while(index < input.size()){
  substringLocation = input.indexOf("Email:", index);
  // do something with substring
  index = substringLocation;
}
票数 2
EN

Stack Overflow用户

发布于 2011-08-31 16:45:27

代码语言:javascript
代码运行次数:0
运行
复制
private static final Pattern EMAIL_PATTERN = Pattern.compile
    ("Email:(.*?\\.[a-z]*?[\\.[a-z]]*)"); 

将解决这个问题,itt将适用于任何电子邮件模式,如abc.co.in,xyz.com或test.fileserver.abc.co.bz域名。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2205766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档