Java 转义'';使用String.split()进行拆分时使用分隔符

Java 转义'';使用String.split()进行拆分时使用分隔符,java,regex,csv,Java,Regex,Csv,我试图读取一个文件,因此当我收到“”、“逗号分隔符”时,我正在拆分字段。但是,有些字段中有,',但它们被括在双引号内,因此如何从,分隔符中拆分它。 这就是我所做的 String[] cols = line.split(Pattern.quote(",")); 我应该如何仅在Java中使用split()来修改它。另外,如果分隔符是管道,我需要做哪些更改?我不会尝试使用正则表达式来进行此操作。正则表达式与此不太匹配——虽然可以创建这样一个正则表达式,但读起来会很糟糕 有很多开源CSV解析器。我发现

我试图读取一个文件,因此当我收到“
”、“
逗号分隔符”时,我正在拆分字段。但是,有些字段中有
,'
,但它们被括在双引号内,因此如何从
分隔符中拆分它。 这就是我所做的

String[] cols = line.split(Pattern.quote(","));

我应该如何仅在Java中使用
split()
来修改它。另外,如果分隔符是管道,我需要做哪些更改?

我不会尝试使用正则表达式来进行此操作。正则表达式与此不太匹配——虽然可以创建这样一个正则表达式,但读起来会很糟糕


有很多开源CSV解析器。我发现了很多项目——在写自己的项目之前,我会仔细阅读这些项目。

我回答了一个类似的问题。第一个表达式(为您的任务而修改)为

,(?=([^"]*"[^"]*")*[^"]*$)
此表达式通过确保后跟偶数个引号来标识未加引号的逗号

    String  line="one|two,three";
    String cols[]= line.split("[,|\\|]");
类似于上述内容的内容将基于、和进行拆分|


对于元字符|您必须使用\\我同意其他人的意见;最好在那里使用CSV解析器,而不是重新发明它。

+1用于正则表达式。我只想指出,在遇到每个逗号时,正则表达式引擎必须扫描文件的其余部分,以确定前面是否有偶数个引号,如果文件很大,这可能会造成巨大的开销。hii我在我的代码字符串[]cols=line.split(Pattern.quote(,(?=([^“]*”[^“]*”[^“]*”[^“]*”])中尝试了正则表达式;它告诉我参数类型java.lang.String、java.lang.String的运算符*未定义..我对正则表达式很幼稚,因此我无法理解这是什么means@justin3250:要将正则表达式表示为java字符串,需要对引号进行转义,即,(?=([^\“]*\”[^\“]*\”[^\“]*\”*[^\“]*$)”@Nerendra:如果你把每一行都分开处理,我想这还不错。除非队伍很长。不过这一点很好@justin3250:这是因为“|”在正则表达式中有特殊含义,因此需要使用“\|”进行转义。需要为Java字符串转义baskslash,结果是
“\\\\”(?=([^\“]*\”[^\“]*\”*[^\“]*\”*[^\“]*$)”