日期:2014-05-20 浏览次数:20964 次
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 + "]");
}
------解决方案--------------------