1

我有通过 FileReader 读取的 CSV 文件。readLine 会给我 CSV 文件的第一行作为字符串。

字符串 str = 1,1,1,"12345",姓名,"猫,狗";

现在逗号(,)是我的分隔符,如果我拆分字符串,它会给我输出

1 1 12345 名字“猫狗”

但不是这个输出,我希望如果“”(双引号)中有一些值;在这种情况下,它应该取完整值(不拆分)

1 1 12345 名字猫,狗

4

2 回答 2

1

尝试这个。

public static void main(String[] args) {
   String s = "Sachin,,M,\"Maths,Science,English\",Need to improve in these subjects.";
   String[] splitted = s.split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)");
   System.out.println(Arrays.toString(splitted));
 }

输出:[Sachin, , M, "Maths,Science,English", 这些科目需要提高。]
例如

分裂[0] =萨钦

拆分 [1] = (空字符串)

分裂[2] = M

splitted[3] = "数学、科学、英语"

splitted[4] = 这些科目需要改进。

无需检查 \ 是否存在。我们正在使用这个正则表达式来拆分 csv 。

于 2014-04-16T13:04:03.933 回答
0

试试这个:

String line = "1,1,1,\"12345\",Name,\"Cat,Dog\"";

    if (line.contains("\"")) {
        line = line.replaceAll("(\"\\,|\\,\")|\\,|\"$", " ");
        System.out.println(line);
    }else {
        // code to split the line
    }

输出 :1 1 1 12345 Name Cat Dog

于 2013-04-06T05:40:55.203 回答