【问题标题】:Is there a way to fix this string output?有没有办法修复这个字符串输出?
【发布时间】:2023-04-07 02:55:01
【问题描述】:

我正在从 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('"','\\"');

【问题讨论】:

  • csv 文件阅读器可能会引用 "",除非被告知要做其他事情。
  • 如何按原样从 CSV 打印字符串?是不是因为CSV文件中字符串中的引用?
  • 如果您提供 minimal, reproducible example 将会很有帮助。

标签: java string csv


【解决方案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)
    • 将所有出现的"" 替换为"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-28
    • 2011-06-27
    • 1970-01-01
    • 2017-12-10
    • 2021-07-25
    • 1970-01-01
    • 2015-09-25
    • 2019-10-01
    相关资源
    最近更新 更多