在第一次出现逗号后返回字符串的子字符串
Posted
技术标签:
【中文标题】在第一次出现逗号后返回字符串的子字符串【英文标题】: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 代码读取这个文件的? 【参考方案1】:试试 String.indexOf(",") 等等。
【讨论】:
【参考方案2】:你可以这样做:
line.substring(line.indexOf(",")+1)
【讨论】:
【参考方案3】:您可以使用允许定义子字符串限制的重载拆分方法。
拆分(",",1)
【讨论】:
【参考方案4】:在第一次出现,
之前,有几种不同的方法可以删除所有内容。
-
使用该索引查找第一个
,
和substring 的索引(位置)。
这看起来像
String wantedPart = lineOfText.substring(lineOfText.indexOf(",") + 1);
由于indexOf
返回,
本身的索引,因此您需要添加一个以使所有内容都超过它。
-
使用更好的重载,例如
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$
【讨论】:
以上是关于在第一次出现逗号后返回字符串的子字符串的主要内容,如果未能解决你的问题,请参考以下文章