今天发现一个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文本编辑引号问题的更多相关文章

  1. C#获取CSV文件内容对逗号和引号分隔的处理

    我们知道,使用excel工具保存成csv文件时有几个规则: 1.每一行的单元格内容之间用逗号分隔. 2.如果单元格的内容本身有逗号,这个单元格的内容将会用引号包含. 3.如果单元格的内容本身有引号 1 ...

  2. Access导出csv 内容添加双引号 vba

    要求:导出的csv文件,用文本工具打开时,文字内容需要有双引号,如下:"1","name1","name2","" 我之 ...

  3. jmeter随笔(3)-从csv中获取带引号的数据详情

    最近在工作中,对jmeter实践的点滴的记录这里分享,不一定正确,仅供参考和讨论,有想法的欢迎留言.谈论. 1技巧1:从csv中获取带引号的数据详情 背景:我们从csv中获取数据,在jmeter中使用 ...

  4. 正则表达式:根据逗号解析CSV并忽略引号内的逗号

    需求:解析CSV文件并忽略引号内的逗号 解决方案: public static void main(String[] args) { String s = "a,b,c,\"1,0 ...

  5. jmeter csv中获取带引号的数据详情

    最近在工作中,对jmeter实践的点滴的记录这里分享,不一定正确,仅供参考和讨论,有想法的欢迎留言.谈论. 1技巧1:从csv中获取带引号的数据详情 背景:我们从csv中获取数据,在jmeter中使用 ...

  6. php 写入csv时 双引号,逗号及特殊字符

    1.双引号 <?php function new_csv($string) { $filename = date('Ymd').'.csv'; //设置文件名 header("Cont ...

  7. jmeter csv中获取带引号的数据详情(转)

    最近在工作中,对jmeter实践的点滴的记录这里分享,不一定正确,仅供参考和讨论,有想法的欢迎留言.谈论. 1技巧1:从csv中获取带引号的数据详情 背景:我们从csv中获取数据,在jmeter中使用 ...

  8. 【Java/Csv/Regex】用正则表达式去劈分带引号的csv文件行,得到想要的行数据

    csv文件是用引号分隔的文本行,为了完善内容人们又用引号把每个区块的内容又包了起来,于是形成下面的文件: "1","2","3"," ...

  9. jmeter csv Data Set Config 文件中带引号的数据转换问题(自动添加双引号解决办法)

    1.我们从csv中获取数据,在jmeter中使用这些数据,其中csv的数据如图,有的数据包含引号. 2.问题:我们获取的json数据,被自动添加了双引号 3.解决方式: 在CSV Data Set C ...

随机推荐

  1. R语言 数据的输入方式总结

    1.使用C函数连接数据 2.使用c,cbind,rbind结合变量 3.使用Vector函数结合数据 4.使用矩阵结合数据5.使用data.frame函数结合数据 6.使用list函数结合数据 c 向 ...

  2. Solr -- Solr Facet 1

    一.Facet介绍 solr facet 是solr搜索的一大特色,facet不好翻译,有说是垂直搜索,有说是分片搜索,但都不是很好,还是懒得翻译了,就叫facet ,具体功能看下面的例子意会吧. 比 ...

  3. MongoDB 权限管理 用户名和密码的操作

    在刚安装完毕的时候MongoDB都默认有一个admin数据库,而admin.system.users中将会保存比在其它数据库中设置的用户权限更大的用户信息.  当admin.system.users中 ...

  4. JavaScript高级程序设计17.pdf

    导航和打开窗口 使用window.open()方法可以导航到一个特定的URL也可以打开一个新的浏览器窗口,接收4个参数:要加载的URL.窗口目标.特性字符串和一个表示新页面是否取代浏览器历史记录中当前 ...

  5. 基础排序算法之并归排序(Merge Sort)

    并归排序是学习分治法 (Merge Sort) 的好例子.而且它相对于选择,插入,冒泡排序来说,算法性能有一定提升.我首先会描述要解决的问题,并给出一个并归排序的例子.之后是算法的思路以及给出伪代码. ...

  6. 上海Uber优步司机奖励政策(1月25日~1月31日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  7. nyoj 239 月老的难题【匈牙利算法+邻接表】

    月老的难题 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘. 现在,由于一些原因,部分男孩与女孩可能结成幸福 ...

  8. mac svn命令

    转载:Mac下svn command命令 svn help command  获取子命令说明 svn info $URL 查看工作空间信息 svn list   显示当前目录下svn记录文件列表,不访 ...

  9. Maven属性、profile和资源过滤

    Maven的六类属性 内置属性 主要有两个常用内置属性:${basedir}项目的根目录(包含pom.xml文件的目录),${version}项目版本 POM属性 用户可以使用该属性引用POM文件中对 ...

  10. python 分支 循环

    一  python 知识点      1.变量(标签):           a(变量名) = '字符串'or 数字 (整形和浮点型)     a相当于变量名的标签           如: a = ...