从文本文件中的名称创建电子邮件地址

时间:2017-06-10 14:08:32

标签: java arrays string split

我已经在每一行都有一个带有名称(第一个+姓氏)的文本文件,从这些名称我想创建电子邮件地址(格式为:firstname.familyname@address.com。)。< / p>

我的计划是做这样的事情:

  1. 为文本文件中的每一行创建一个包含字符串的数组
  2. 将每个字符串拆分为两部分:名字,姓氏。第一个名字是字符串中的第一个单词,姓氏是其他所有单词。
  3. 为每个字符串(N个字符串)创建一个新数组(splitNameN),其中包含两个元素:名字,姓氏
  4. 从每个splitNameN数组中,创建一个新字符串:&#34; first name&#34; +&#34;。&#34; +&#34;姓氏&#34; +&#34; @ mail.com&#34;
  5. 将所有这些字符串加在一起用逗号分隔(例如:barrack.obama@mail.com; donald.trump@mail.com)
  6. 我不知道怎么做的主要事情是分割名称并将它们放入正确的数组中,我可以拆分它们但是它们会丢失它们的分组。

        public static void main(String[] args)  throws IOException
        {
          File file = new File("D:\\NetbeansProjects\\Emails\\src\\emails\\lijst.txt");
          BufferedReader abc = new BufferedReader(new FileReader(file));
          List<String> data = new ArrayList<String>();
          String s;
          while((s=abc.readLine())!=null) {
            data.add(s);
          }
          abc.close();
          System.out.println(data);
          List<String> splitdata = new ArrayList<String>();
          for(String strLine : data) {
            String[] strWord = strLine.split("[\\s']");
            for (String c : strWord) {
                    splitdata.add(c);     
            }
          }
          System.out.println(splitdata);
        }
    

3 个答案:

答案 0 :(得分:1)

我建议你逐行阅读文件。

try (BufferedReader br = new BufferedReader(new FileReader(file))) {
String line;
while ((line = br.readLine()) != null) {
   // process the line.
}

这是最常见的做法。在当前行参数中,您将存储第一个和系列名称,之后您可以处理这两个名称(最好使用StringBuffer)并将结果添加到您选择的最终字符串中。

祝你好运:)

答案 1 :(得分:1)

在你的解释中,你错过了循环中的一部分你的线条如下:

firstname1 familyname1
firstname2 familyname2

因此,在您拆分后,您可以轻松使用:

for (String strLine : data) {
    String[] strWord = strLine.split("[\\s']");

    splitdata.add(strWord[0] + "." + strWord[1] + "@mail.com");
    //------------first name         last name
}
System.out.println(splitdata);

输出

[firstname1.familyname1@mail.com, firstname2.familyname2@mail.com]

注意您必须在使用它们之前验证您的名称,如果名称包含许多部分,您还必须在名称之间使用正确的分隔符。

答案 2 :(得分:1)

读取数据后,您可以创建一个二维数组,并在那里存储名字和姓氏,然后将它们连接起来,按照您的要求创建一个电子邮件地址。

String[][] splitdata = new String[data.size()][2];
int rowNum = 0;
for (String strLine : data) {
    String[] strWord = strLine.split("[\\s]");
    // Store it in an array as you asked for or join them right here
    splitdata[rowNum][0] = strWord[0];
    splitdata[rowNum][1] = strWord[1];
    ++rowNum;
}
for (String[] row: splitdata) {
    System.out.println(row[0] + "." + row[1] + "@mail.com");
}

如果您使用的是java8,那么整个事情就像写成..

Path path = Paths.get("D:\\NetbeansProjects\\Emails\\src\\emails\\lijst.txt");
String commaJoinedEmails = String.join(",", Files.lines(path)
    .map(line -> line.split("\\s"))
    .map(tokens -> tokens[0] + "." + tokens[1] + "@mail.com")
    .toArray(String[]::new));