我有通过FileReader读取的CSV文件。 readLine将给我CSV文件的第一行作为String。
字符串str = 1,1,1,“ 12345”,名称,“ Cat,Dog”;
现在逗号(,)是我的分度符,如果我分割了字符串,它给了我输出
1个
1个
12345
名称
“猫
狗”
但是,除了这个输出,我希望如果在“”(双引号)中有某个值;在这种情况下,它应该采用完整值(不分割)
1个
1个
12345
名称
猫狗
最佳答案
尝试这个。
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,“数学,科学,英语”,需要在这些主题上进行改进。]
例如
splitted [0] =萨钦
splitted [1] =(空字符串)
split [2] = M
splitted [3] =“数学,科学,英语”
splitted [4] =在这些主题上需要改进。
无需检查\是否存在。我们正在使用此正则表达式拆分csv。