【问题标题】:Returning substring of string after first occurence of a comma在第一次出现逗号后返回字符串的子字符串
【发布时间】:2015-05-04 17:10:24
【问题描述】:

如何获取这个输入的 CSV 文件:

0,1
1,2
3,4
5,6,7
8,10
9,10

在第一次出现“,”之后只返回每行的子字符串,这样我的输出是:

1
2
4
6,7
10
10

我只能弄清楚如何在用逗号分割后解析一定范围内的字符串,所以我使用string.split(",")[1]返回第一个逗号之后和下一个逗号之前的所有内容,但我不知道如何获取第一个逗号后的所有内容。因此,对于包含多个逗号的输入,我缺少数据。

【问题讨论】:

  • 我只能弄清楚如何在用逗号分割后解析一定范围内的字符串,所以我有 string.split(",")[1] 返回第一个逗号之后和之前的所有内容下一个逗号,但我不知道如何在第一个逗号之后获取所有内容
  • 你是如何用 Java 代码读取这个文件的?

标签: java regex string parsing csv


【解决方案1】:

试试 String.indexOf(",") 等等。

【讨论】:

    【解决方案2】:

    你可以这样做:

    line.substring(line.indexOf(",")+1)
    

    【讨论】:

      【解决方案3】:

      您可以使用允许定义子字符串限制的重载拆分方法。

      拆分(",",1)

      【讨论】:

        【解决方案4】:

        在第一次出现, 之前,有几种不同的方法可以删除所有内容。

        1. 使用该索引查找第一个,substring 的索引(位置)。

        这看起来像

        String wantedPart = lineOfText.substring(lineOfText.indexOf(",") + 1);
        

        由于indexOf 返回, 本身的索引,因此您需要添加一个以使所有内容都超过它。


        1. 使用更好的重载,例如String.split(String regex, int limit)。此重载允许您匹配最多 limit 子字符串。因此,如果限制为 2,它将在找到的第一个 , 处拆分(仅此而已)。

        在您的代码中,您可以使用

        String wantedPart = lineOfText.split(",")[1];
        

        【讨论】:

          【解决方案5】:

          如果可以使用 shell 脚本,您可以使用 cut 命令:

          -d ',' 表示使用逗号,-f2- 表示使用第 2 个字段。

          Machine:~ donald$ cat file.txt
          0,1
          1,2
          3,4
          5,6,7
          8,10
          9,10
          Machine:~ donald$ cat file.txt | cut -d ',' -f2-
          1
          2
          4
          6,7
          10
          10
          Machine:~ donald$
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-03-02
            • 2021-02-10
            • 1970-01-01
            • 1970-01-01
            • 2018-08-24
            • 2014-10-12
            • 2015-06-13
            • 1970-01-01
            相关资源
            最近更新 更多