现在要读取一个CSV文件,将内容读取后用excel的格式输出,
读取的时候使用StringTokenizer类,用逗号将CSV的数据用逗号一个个分割,
csv的格式是这样的(值与值之间用半角逗号分隔):
"aaa","bbb","ccc","ddd","eee";
像这样的情况是没有问题的;
但是当数据中也有半角逗号时,例如:
"aaa,fff","bbb,ggg"
读取的时候就会出现字符被分割为"aaa(第一个字符),fff"(第二个字符)
一个字符被分割为两个了,而且都只有一个双引号,这会造成数据的混乱,
有没有朋友知道怎么处理的?
可以用双引号加逗号来分割,如用(",")这样来分割
https://blog.csdn.net/xyr05288/article/details/53696464/
String[] strArr = str.trim().split(",(?=([^\\"]*\\"[^\\"]*\\")*[^\\"]*$)",-1); //双引号内的逗号不分割 双引号外的逗号进行分割
可以先把类似"aaa,fff"中的逗号先用一个特殊的字符串替换掉(根据逗号的上一个字符和下一个字符不是 " 做为条件过滤),再处理,最后在替换回来.