【发布时间】:2013-12-24 00:55:52
【问题描述】:
我有一个文本文件,其中包含参考、姓名、地址、金额、dateTo、dateFrom 和必填列,格式如下:
"120030125 J Blog 23, SOME HOUSE, 259.44 21-OCT-2013 17-NOV-2013"
" SQUARE, STREET, LEICESTER,"
LE1 2BB
"120030318 R Mxx 37, WOOD CLOSE, BIRMINGHAM, 121.96 16-OCT-2013 17-NOV-2013 Y"
" STREET, NN18 8DF"
"120012174 JE xx 25, SOME HOUSE, QUEENS 259.44 21-OCT-2013 17-NOV-2013"
" SQUARE, STREET, LEICESTER,"
LE1 2BB
"100154992 DL x 23, SOME HOUSE, QUEENS 270.44 21-OCT-2013 17-NOV-2013 Y"
" SQUARE, STREET, LEICESTER,"
LE1 2BC
我只对每个字符串的第一行感兴趣,想提取reference、name、amount、dateTo 和dateFrom 列中的数据,并希望将它们写入CSV 文件。目前我只能编写以下代码并提取第一行并去掉开始和结束的双引号。输入文件包含空格,输出文件也包含空格。
public class ReadTxt {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new FileReader("C:/Users/me/Desktop/input.txt"));
String pattern = "\"\\d\\d\\d\\d";
// Create a Pattern object
Pattern r = Pattern.compile(pattern);
int i;
ArrayList<String> list = new ArrayList<String>();
boolean a = true;
PrintWriter out = new PrintWriter(new PrintWriter("C:/Users/me/Desktop/Output.txt"), a);
try {
String line = br.readLine();
while (line != null) {
Matcher m = r.matcher(line);
if (m.find()) {
String temp;
temp = line.substring(1, line.length() - 1);
list.add(temp);
}
else {
// do nothing
}
line = br.readLine();
}
}
finally {
br.close();
}
for (i = 0; i < list.size(); i++) {
out.println(list.get(i));
}
out.flush();
out.close();
}
}
上面的代码将创建一个带有以下输出的文本文件:
120030125 J Blog 23, SOME HOUSE, QUEENS 259.44 21-OCT-2013 17-NOV-2013
120030318 R Mxx 37, WOOD CLOSE, BIRMINGHAM, 121.96 16-OCT-2013 17-NOV-2013 Y
120012174 JE xx 25, SOME HOUSE, QUEENS 259.44 21-OCT-2013 17-NOV-2013
100154992 DL x 23, SOME HOUSE, QUEENS 259.44 21-OCT-2013 17-NOV-2013 Y
我的预期输出如下,但在 csv 文件中:
120030125 J Blog 259.44 21-OCT-2013 17-NOV-2013
120030318 R Mxx 121.96 16-OCT-2013 17-NOV-2013
120012174 JE xx 259.44 21-OCT-2013 17-NOV-2013
100154992 DL x 259.44 21-OCT-2013 17-NOV-2013
任何建议、教程链接或帮助将不胜感激,因为我不是 Java 专家。我确实尝试在互联网上查找教程,但找不到任何对我有用的教程。
【问题讨论】:
-
您向我们展示了您的实际输出,您也可以向我们展示您的预期输出吗?
-
您想要一个教程来帮助您了解如何将这些数据写入 csv 文件?
-
@tieTYT - 我已经编辑了我的帖子以显示预期的输出。
-
每个数据的长度是固定的吗?
-
@Adarsh - 除了第一列和日期列中的参考编号外,数据长度不固定。我希望能够提取所需的数据并用逗号分隔它们并将它们写入 CSV 文件。由于数据的长度不固定,输入文件包含空格,我不知道如何提取所需的数据。
标签: java csv export-to-csv