csv 是否在每一行添加前导空格?

y4ekin9u  于 2023-11-14  发布在  其他
关注(0)|答案(1)|浏览(116)

我使用openCsv从列表中读取字符串并写入CSV文件。此文件将上传到一个网站,该网站验证文件中存在的字符串(由~分隔的字母和数字的组合),不接受任何空格或其他字符。
当文件被上传的网站说它有无效的条目.虽然数据是写在.csv,我看到一个额外的字符添加在每列.我最初以为这是一个前导空格,但我不能看到任何.以防万一我尝试点击空格在行中的每个值之前,并尝试上传文件.它正在上传.
那么我该怎么做才能不添加那个前导字符呢?这些文件将在自动化过程中使用,所以我每次都无法打开AMD编辑。
我尝试在将字符串添加到数组中之前使用strip()和trim(),然后将其传递给writenext():

FileWriter fw=new FileWriter("check.csv");
String setup="12348448~RR";
String arr[]=new String[1];
arr[0]=setup.strip();
CsvWriter csvw=new CsvWriter(fw);
csvw.writeNext(arr);

字符串
但是里面的文本仍然显示为无效,但是一旦我在每行的数据前面按下退格键并上传相同的文件,它就被上传了。
这里使用的前导字符是什么?有没有办法在每次写完后不打开和编辑文件?任何建议,即使是使用其他CSV库也会很有用。
编辑:我在Windows中使用Java SE 11。我使用的是openCsv版本4.1。

zengzsys

zengzsys1#

如果您查看最新版本的OpenCSV源代码,您会发现writeNext(array)调用writeNext(array, true),其中第二个参数是applyQuotesToAll。该参数告诉编写器将每个值用引号括起来输出,而不管是否需要根据值的字符来括起来。
这同样适用于您正在使用的旧版本。
基于此,我断定:
1.您将生成一个CSV文件,其中的值都用引号括起来。
1.因此,第一行开头的意外字符将是双引号,即编写器的默认引号字符。
我不知道为什么你看不到这个字符,但可能是网站的错误信息很难阅读。例如,如果它用引号括住了意外字符,你可能会误解“或“。
1.修复的方法是使用writeNext(array, false)而不是writeNext(array)
OpenCSV 4.1中CSVWriter的源代码链接是here,相关代码位于第368行。

相关问题