1

我使用了许多不同的正则表达式字符串,它们都做同样的事情。

我的 .csv 的一行如下所示:

"999","Location","Alt. fare key","Table ID","Address","Line 2","City","State",19111,,,H,, 等...... ..(有 139 列。

如您所见,一些条目用引号分隔,而另一些则没有。另外,引号与否。每个条目都用逗号分隔。

以下是我使用的两个正则表达式字符串示例:

String regex = "(?:(?<=\")([^\"]*)(?=\"))|(?<=,|^)([^,]*)(?=,|$)"
Object[] tokens = strLine.split(regex);
model.addRow(tokens);
jTable1.setModel(model);

String regex = ",(?=([^\"]*\"[^\"]*\")*[^\"]*$)"
Object[] tokens = strLine.split(regex);
model.addRow(tokens);
jTable1.setModel(model);

两者都做同样的事情。

假装下面的 |(s) 是我的 jTable 的行:

“999”|“位置”|“备用票价键”|“表 ID”|“地址”|“第 2 行”|“城市”|“州”|19111| | |H|

我希望它像这样出来:

999|位置|Alt. 票价键|表 ID|地址|第 2 行|城市|州|19111| | |H| ETC.....

正则表达式还需要什么来删除不需要的括号?

提前感谢您的帮助。JB

4

1 回答 1

0

但它是否处理嵌入式逗号?OpenCSV库会,您只需执行此操作(从 opencsv 文档复制)

CSVReader reader = new CSVReader(new FileReader("yourfile.csv"));
String [] nextLine;
while ((nextLine = reader.readNext()) != null) {
    // nextLine[] is an array of values from the line
    System.out.println(nextLine[0] + nextLine[1] + "etc...");
}
于 2012-10-17T02:12:33.757 回答