在java中拆分单词并处理双引号

在java中拆分单词并处理双引号,java,split,Java,Split,我有一个CSV文件,我通过文件阅读器读取它。readLine会将CSV文件的第一行作为字符串提供给我 字符串str=1,1,1,“12345”,名称,“猫,狗” 现在逗号(,)是我的delimeter,如果我拆分字符串,它将给我输出 一, 1. 12345 名称 “猫 “狗” 但是,我想知道的不是这个输出,而是如果在“”(双引号)中有一些值;在这种情况下,它应该取完整值(不拆分) 一, 1. 12345 名称 猫,狗试试这个: String line = "1,1,1,\"12345\",Nam

我有一个CSV文件,我通过文件阅读器读取它。readLine会将CSV文件的第一行作为字符串提供给我

字符串str=1,1,1,“12345”,名称,“猫,狗”

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

一, 1. 12345 名称 “猫 “狗”

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

一, 1. 12345 名称 猫,狗

试试这个:

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
    }
输出:
112345 Name Cat Dog

尝试以下方法:

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
    }
输出:
112345 Name Cat Dog

试试这个

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));
 }
Out put:[Sachin,M,“数学、科学、英语”,这些科目需要提高。]
例如

拆分的[0]=Sachin

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

拆分的[2]=M

拆分[3]=“数学、科学、英语”

分裂的[4]=这些科目需要提高

不需要检查\是否存在。我们正在使用此正则表达式拆分csv。

试试这个

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));
 }
Out put:[Sachin,M,“数学、科学、英语”,这些科目需要提高。]
例如

拆分的[0]=Sachin

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

拆分的[2]=M

拆分[3]=“数学、科学、英语”

分裂的[4]=这些科目需要提高


不需要检查\是否存在。我们正在使用此正则表达式拆分csv。

您可能希望寻找标准的csv解析器,而不是重新发明轮子。您能告诉我使用csv解析器的人是谁吗?我还没有使用。您可能希望寻找标准的csv解析器,而不是重新发明轮子。您能告诉我使用csv解析器的人是谁吗语法分析器。我还没有用过。