有没有办法解决此字符串输出?

时间:2019-09-27 00:56:23

标签: java string csv

我正在从CSV文件中读取数据,并将字符串放入名为album的数组列表中。字符串之一是:The Beatles ("The White Album"),而当我使用System.out.print(album.get(index))打印时,输出是:

"The Beatles (""The White Album"")"

为什么在开头和结尾以及中间还有多余的引号?

我尝试用\"替换字符串的引号,以便它也将引号作为字符串,但是输出为:

\"The Beatles (\\"The White Album\\")\

我尝试的代码:

System.out.print(album.get(index).replace('"','\\"');

1 个答案:

答案 0 :(得分:1)

CSV用逗号分隔值:

value1,value2,value3

但是,如果值本身包含逗号,例如value,3,该怎么办? CSV表示没问题,我们将用引号引起来:

value1,value2,"value,3"

因此,现在引号用于用逗号括起来的值...如果这样的值本身包含引号,例如value "3",该怎么办? CSV表示没问题,我们将引号替换为双引号:

value1,value2,"value ""3"""

在您的情况下,您可能想做的是这样:

  • 如果您读取的字符串不是以"开头,请照原样使用。
  • 如果确实以"开头:
    • 将其字符串化以剪切第一个和最后一个字符-str.substring(1, str.length() - 1)
    • 将所有出现的""替换为"