当某些元素也包含逗号时,如何从逗号分隔的文本中解析元素?

时间:2012-11-13 17:42:04

标签: java csv comma

我有一些用逗号分隔的记录。我需要分离文件中的记录并将其放在一个数组中。我遇到的问题是文本以逗号分隔,但某些字段中有逗号,而且不应该是分隔符。

例如,当字段指定地址时,例如:"2, foo , 403 HAPPY LANE Seattle, WA., etc"

以下是我正在使用的代码示例:

// Start streams....
String str = null;
    List<String> items = null;

    while((str = bufr.readLine()) != null) {
     items = Arrays.asList(str.replace("\"", "").split("\\s*,\\s*"));
     while(true) {
         System.out.println (items);

我知道csv以及所有这些,我宁愿不使用它。

2 个答案:

答案 0 :(得分:0)

如果您需要忽略的逗号在引号内,则可以使用OpenCSV之类的包。它将照顾忽略引用的昏迷。 Apache Commons也列出了其他一些here

但是,如果没有引用昏迷,那么你无法让计算机知道一个昏迷是一个分界符而一个不是。

答案 1 :(得分:0)

这实际上取决于您的情况,但我可以考虑采用一些方法来实现这一目标。

A)在逗号分隔中查找模式。 IE浏览器。您有一个数据库,您可以从中读取值。您正在查看的表是具有姓氏,名字和地址的客户表。如果地址中有一个额外的逗号,你不想拆分,你可以写一些方法来忽略每三个逗号。

B)将您想要分隔值的所有逗号替换为数据中未出现的其他特殊字符,并根据该字符而不是逗号分割数据。

正如我所说,这实际上取决于您的情况,以及您正在阅读的数据。也许如果您提供有关问题背景的更多信息,您可以得到更精确的答案。