• 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








  • 相关阅读:
    Android Studio 之 no render target selected
    将android模拟器上的db文件拷贝到电脑上
    两种思路从0打印到100
    RN picker使用
    android打印日志封装
    android仿支付宝输入车牌号
    OC仿支付宝输入UITextField输入车牌号
    RN全局的变量,方法,全局类,全局类方法
    RN九宫格
    RN正、反向传值,组件输出
  • 原文地址:https://www.cnblogs.com/andong2015/p/5361026.html
Copyright © 2020-2023  润新知