我已经在每一行都有一个带有名称(第一个+姓氏)的文本文件,从这些名称我想创建电子邮件地址(格式为:firstname.familyname@address.com。)。< / p>
我的计划是做这样的事情:
我不知道怎么做的主要事情是分割名称并将它们放入正确的数组中,我可以拆分它们但是它们会丢失它们的分组。
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);
}
答案 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));