【问题标题】:Don't split string if the desired character is inside quotation marks in java如果所需字符在 java 中的引号内,则不要拆分字符串
【发布时间】:2017-08-29 03:40:16
【问题描述】:

如果我想用字符“,”分割以下字符串

看图 strings

如你所见,有 3 行,在第一行,子字符串

    "HALLIBURTON OIL WELL CEMENTING CO. v. WALKER et al., DOING BUSINESS AS DEPTHOGRAPH CO."

在引号内,但也包含一个“,”,这不会出现在以下 2 行中。

我想将子字符串保留在引号内,也就是说String.split(“,”)不应该考虑引号内的“,”,我该如何实现?

提前非常感谢!

【问题讨论】:

  • 不要编写自己的 CSV 解析器,使用现有的高质量调试开源解析器之一,例如 OpenCSV 或 Apache Commons CSV。
  • 这种情况下我只需要处理这种特殊情况,有没有办法呢?
  • 您不可能知道这是您必须处理的唯一特殊情况。你必须让我们相信它确实是唯一的可能性,然后我们必须问一个系统只处理一个预先知道的数据有什么意义。
  • 显示您的完整输入案例
  • 因为我正在处理一个相当小的 csv 文件。

标签: java string split


【解决方案1】:

所以我找到了解决办法,干脆做

    str.split(",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)");

不知道是否满足要求,有没有cmets?

【讨论】:

    猜你喜欢
    • 2013-08-03
    • 2021-10-19
    • 2020-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-20
    相关资源
    最近更新 更多