日期:2014-05-20 浏览次数:20756 次
String str = "7,,08020056,,C.3,-,P,SYMBIAN,\"\"NOKIA,SAMSUNG,Sony Erission\"\",9.0,NPS,\"\"N73,8250,N97,E61,E71,5320,8855,6210C,N95\"\","; String regex = "\\G(?:^|,)(?:\"([^\"]*+(?:\"\"[^\"]*+)*+)\"|([^\",]*+))"; Matcher main = Pattern.compile(regex).matcher(str); Matcher mquote = Pattern.compile("\"\"").matcher(""); while (main.find()) { String field; if (main.start(2) >= 0) { field = main.group(2); } else { field = mquote.reset(main.group(1)).replaceAll("\""); } System.out.println("Field [" + field + "]"); }
CSV逗号分隔值文件 规则 0 开头是不留空,以行为单位。 1 可含或不含列名,含列名则居文件第一行。 2 一行数据不垮行,无空行。 3 以半角符号,作分隔符,列为空也要表达其存在。 4 列内容如存在半角逗号(即,)则用半角引号(即"")将该字段值包含起来。 5 列内容如存在半角引号(即")则应替换成半角双引号("")转义。 6 文件读写时引号,逗号操作规则互逆。 7 内码格式不限,可为ASCII、Unicode或者其他。
------解决方案--------------------
建议使用smooks这个插件。可以解析csv,xml,edi,flatfile等等。具体情况google一下吧。
------解决方案--------------------
我觉得可以不用csv格式的,直接xls格式保存数据
然后用POI来操作excel
------解决方案--------------------
String str = "7,,08020056,,C.3,-,P,SYMBIAN,\"\"NOKIA,SAMSUNG,Sony Erission\"\",9.0,NPS,\"\"N73,8250,N97,E61,E71,5320,8855,6210C,N95\"\","; String regex = "([^,]*)(,)"; Matcher main = Pattern.compile(regex).matcher(str); while (main.find()) { String field; field = main.group(1).replaceAll("\"",""); System.out.println("Field [" + field + "]"); }
------解决方案--------------------