【发布时间】:2016-09-09 10:22:03
【问题描述】:
我是 CSV 解析的新手。我有一个 CSV 文件,其中第三列(描述字段)可能有一个或多个 6 位数字以及其他值。我需要过滤掉这些数字并将它们写在与每一行对应的相邻列中。
例如:
3rd column 4th column
============= ===========
123456adjfghviu77 123456
shgdasd234567 234567
123456abc:de234567:c567890d 123456-234567-567890
12654352474
请帮忙。这是我到目前为止所做的。
String strFile="D:/Input.csv";
CSVReader reader=new CSVReader(new FileReader(strFile));
String[] nextline;
//int lineNumber=0;
String str="^[\\d|\\s]{5}$";
String regex="[^\\d]+";
FileWriter fw = new FileWriter("D:/Output.csv");
PrintWriter pw = new PrintWriter(fw);
while((nextline=reader.readNext())!=null){
//lineNumber++;
//System.out.println("Line : "+lineNumber);
if(nextline[2].toString().matches(str)){
pw.print(nextline[1]);
pw.append('\n');
System.out.println(nextline[2]);
}
}
pw.flush();
【问题讨论】:
-
可能有一个或多个 6 位数字以及其他值 -> 您必须向我们展示示例输入和输出
-
问题是您只是检查正则表达式模式是否 匹配,如果匹配则打印该行。您需要使用捕获组并打印 submatches。
-
您忘记为给定的输入添加适当的输出。
-
@Ritesh:ideone.com/pzXA3c。只需使用
"\\d{6}"和Matcher#find()。 -
@RiteshSatapathy 你是问题的根源,所以在这种情况下你应该告诉我们你想要什么......
标签: java regex excel csv pattern-matching