Java的解析字符串的许多实例从字符串
-
18-09-2019 - |
题
我试图写一个小的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域。
不隶属于 StackOverflow