【问题标题】:CSV line splitting into an array [duplicate]CSV行拆分为数组[重复]
【发布时间】:2012-05-18 07:33:36
【问题描述】:

我有一个包含一行的 CSV 文件:

SHIELA,ABIJAY,,,shiela@abijay.com,Shiela123,,43 123 STREET,,MEDFORD,MA ,2155,,,,617-874-4248,0,0,0,,,,,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,20847, INAC,8101969,,,,,,,`

使用拆分将值拆分为数组

def fields = line.split(",")

我得到了

[SHIELA, ABIJAY, , , shiela@abijay.com, Shiela123, , 43 BOWER STREET, , MEDFORD, MA , 2155, , , , 617-874-4248, 0, 0, 0, , , , , 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 20847,  INAC, 8101969]

但是在 8101969 之后我还有几个逗号。如何在该数组中也获得逗号?

【问题讨论】:

  • 只是好奇:你确定你说的是 Java ("def fields = line.split(",")")?
  • 1) 使用 CSV 解析器。 2) “Plz help me Nimmy”请拼出所有 6 个个字母“请”这个词,并且不要在问题中包含这样的噪音。

标签: java csv split


【解决方案1】:

要解决这个特殊问题,请这样做

def fields = line.split(",", -1)

不过,总的来说,我同意@npinti;考虑使用 CSV 库(例如 OpenCSV)可能是个好主意。

【讨论】:

    【解决方案2】:

    如果您需要处理 CSV 文件,我建议您使用更强大的东西(不仅仅是.split),例如OpenCSV

    opencsv 是一个非常简单的 csv(逗号分隔值)解析器库 对于 Java。

    一个非常简短的教程是可用的here

    【讨论】:

      【解决方案3】:

      请参阅JavaDoc for split。如果只有一个参数,则丢弃空的尾随字符串。如果第二个参数是非正数,

      那么该模式将被应用尽可能多的次数,并且数组可以有任意长度。

      因此您的问题将通过以下方式解决:

      def fields = line.split(",", -1) 
      

      【讨论】:

        猜你喜欢
        • 2016-04-15
        • 2021-05-04
        • 1970-01-01
        • 1970-01-01
        • 2016-07-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-24
        相关资源
        最近更新 更多