csv文本编辑引号问题
今天发现一个csv的一个问题,csv工具类对于引号默认有特殊的处理。我希望写出来的结果是
1,"1",1
原来的代码是
CsvWriter cw=new CsvWriter("test.csv", ',', Charset.forName("GBK"));
String[] tsr=new String[]{"1","\"1\"","1"};
cw.writeRecord(tsr);
结果是
1,"""1""",1
多了2个引号,后面经过查询API(网址:http://javacsv.sourceforge.net/com/csvreader/CsvWriter.html)
发现了一个方法
CsvWriter cw=new CsvWriter("test.csv", ',', Charset.forName("GBK"));
cw.setUseTextQualifier(false);
String[] tsr=new String[]{"1","\"1\"","1"};
cw.writeRecord(tsr);
结果对了:
1,"1",1
手动输出scv的默认配置:
System.out.println(cw.getForceQualifier());
System.out.println(cw.getTextQualifier());
System.out.println(cw.getUseTextQualifier());
结果:
false
"
true
(未看源码,以下全是猜测)
也就是说,csv默认使用引号作为文本限制符,当设置getUseTextQualifier为true的时候,如果文本要输出这个限制符,则这个文本本身会被限制符包围,并且还有一个限制符会作为作为转义符出现
下面使用程序验证下,我们把限制符改为“#”,然后试一下
cw.setTextQualifier('#');
cw.setUseTextQualifier(true);
String[] tsr=new String[]{"1","#1","1"};
cw.writeRecord(tsr);
结果为:
1,###1#,1
注意, "#1"只有前面有限制符,后面没有,但是结果却是 ###1# ,说明第一个是限制符,第二个是转义,第三个是我们的,第四个是限制符
接下来,如果我要的结果是:
"1","1","1"
那我需要在代码里都加上 \" 吗?即
String[] tsr=new String[]{"\"1\"","\"1\"","\"1\""};
答案是不需要。
cw.getForceQualifier() 意思是是否强制输出限制符,默认是false,这里设置为true即可全部输出
下面看代码:
cw.setForceQualifier(true);
cw.setTextQualifier('"');
cw.setUseTextQualifier(false);
String[] tsr=new String[]{"1","\"1","1"};
cw.writeRecord(tsr);
输出结果是:
"1","1","1"
反过来设为默认false看看结果
cw.setForceQualifier(false);
cw.setTextQualifier('"');
cw.setUseTextQualifier(false);
String[] tsr=new String[]{"1","\"1","1"};
cw.writeRecord(tsr);
1,"1,1
csv文本编辑引号问题的更多相关文章
- C#获取CSV文件内容对逗号和引号分隔的处理
我们知道,使用excel工具保存成csv文件时有几个规则: 1.每一行的单元格内容之间用逗号分隔. 2.如果单元格的内容本身有逗号,这个单元格的内容将会用引号包含. 3.如果单元格的内容本身有引号 1 ...
- Access导出csv 内容添加双引号 vba
要求:导出的csv文件,用文本工具打开时,文字内容需要有双引号,如下:"1","name1","name2","" 我之 ...
- jmeter随笔(3)-从csv中获取带引号的数据详情
最近在工作中,对jmeter实践的点滴的记录这里分享,不一定正确,仅供参考和讨论,有想法的欢迎留言.谈论. 1技巧1:从csv中获取带引号的数据详情 背景:我们从csv中获取数据,在jmeter中使用 ...
- 正则表达式:根据逗号解析CSV并忽略引号内的逗号
需求:解析CSV文件并忽略引号内的逗号 解决方案: public static void main(String[] args) { String s = "a,b,c,\"1,0 ...
- jmeter csv中获取带引号的数据详情
最近在工作中,对jmeter实践的点滴的记录这里分享,不一定正确,仅供参考和讨论,有想法的欢迎留言.谈论. 1技巧1:从csv中获取带引号的数据详情 背景:我们从csv中获取数据,在jmeter中使用 ...
- php 写入csv时 双引号,逗号及特殊字符
1.双引号 <?php function new_csv($string) { $filename = date('Ymd').'.csv'; //设置文件名 header("Cont ...
- jmeter csv中获取带引号的数据详情(转)
最近在工作中,对jmeter实践的点滴的记录这里分享,不一定正确,仅供参考和讨论,有想法的欢迎留言.谈论. 1技巧1:从csv中获取带引号的数据详情 背景:我们从csv中获取数据,在jmeter中使用 ...
- 【Java/Csv/Regex】用正则表达式去劈分带引号的csv文件行,得到想要的行数据
csv文件是用引号分隔的文本行,为了完善内容人们又用引号把每个区块的内容又包了起来,于是形成下面的文件: "1","2","3"," ...
- jmeter csv Data Set Config 文件中带引号的数据转换问题(自动添加双引号解决办法)
1.我们从csv中获取数据,在jmeter中使用这些数据,其中csv的数据如图,有的数据包含引号. 2.问题:我们获取的json数据,被自动添加了双引号 3.解决方式: 在CSV Data Set C ...
随机推荐
- .config-20150410
## Automatically generated file; DO NOT EDIT.# OpenWrt Configuration#CONFIG_MODULES=yCONFIG_HAVE_DOT ...
- bzoj1863
白书上的题目 这里唯一要说一下的就是,二分答案不难想到,怎么构造答案的合理性非常值得注意 ..] of longint; n,l,r,m,ans,i:longint; function max ...
- Web Service和ISAPI的区别与联系 转
Web Service和ISAPI的区别与联系 1.Web Service 是一种新的web应用程序分支,他们是自包含.自描述.模块化的应用,可以发布.定位.通过web调用.Web Service ...
- 高效的TCP消息发送组件
目前的.net 架构下缺乏高效的TCP消息发送组件,而这种组件是构建高性能分布式应用所必需的.为此我结合多年的底层开发经验开发了一个.net 下的高效TCP消息发送组件.这个组件在异步发送时可以达到每 ...
- poj 1696 Space Ant 极角排序
#include<cstdio> #include<cstring> #include<cmath> #include<iostream> #inclu ...
- Redis教程03——Redis 发布/订阅(Pub/Sub)
Pub/Sub 订阅,取消订阅和发布实现了发布/订阅消息范式(引自wikipedia),发送者(发布者)不是计划发送消息给特定的接收者(订阅者).而是发布的消息分到不同的频道,不需要知道什么样的订阅者 ...
- hdoj 3746 Cyclic Nacklace【KMP求在结尾加上多少个字符可以使字符串至少有两次循环】
Cyclic Nacklace Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)T ...
- mysql 导出,导入数据
导出 加-d代表只导出表结构 命令行下具体用法如下: mysqldump -u用户名 -p密码 -d 數據库名 表名 脚本名; 1.导出数据库为dbname的表结构(其中用户名为root, ...
- 并查集hdu1232
Problem Description 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道 ...
- html,shtml和htm的区别
SHTML和HTML的区别,如果用一句话来解释就是:SHTML 不是HTML而是一种服务器 API,shtml是服务器动态产成的html. 虽然两者都是超文本格式,但shtml是一种用于SSI技术的文 ...