从字符串中提取特定事物的方法?

时间:2014-04-09 22:07:30

标签: java

我有以下格式的超过一千封电子邮件和名称的长列表:

Name Class Email
Name Class Email
...Etc...

有没有办法可以将整个列表粘贴到JTextPane或控制台中,让程序只选择电子邮件并打印出来?

如何做到这一点?

2 个答案:

答案 0 :(得分:0)

您可以先使用分隔符对传入的文本进行标记。在你的情况下,我假设它是一个空格字符。

String str = "John C504 john@doe.com";
String[] arr = str.split(" ");

if(arr.length > 2){
    String email = arr[2];
}

需要考虑的事项:

  1. 如果名称之间有空格字符,例如:" John Doe"那么这种技术可能行不通。更好的方法是在文本中使用不同的分隔符。
  2. 您还可以使用正则表达式从字符串中提取电子邮件地址。如果说电子邮件地址存在于字符串的开头/中间而不是位于字符串的末尾,则此技术不会受到影响。

答案 1 :(得分:0)

我不是专家,但我在这里是怎么做的:

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class GiveEmails {

    public static void main(String[] args) throws FileNotFoundException {
        Scanner infile = null;
        if (args.length == 1) {
            infile = new Scanner(new File(args[0]));
        }

        while (infile != null && infile.hasNext()) {
            String line = infile.nextLine();
            String[] linearray = line.split(" ");
            System.out.println(linearray[linearray.length-1]); // print the last token
        }       
    }
}

将文件名作为第一个参数,然后返回每行的最后一个标记,使用空格作为分隔符。