【问题标题】:Convert a comma separated string to list which has a comma at the last将逗号分隔的字符串转换为最后一个逗号的列表
【发布时间】:2018-06-02 17:54:25
【问题描述】:

我有下面的字符串,最后有一个逗号。我想将字符串转换为列表。我正在使用下面的代码来做到这一点。

public class TestClass {
    public static void main(String[] args) {

        String s = "2017-07-12 23:40:00.0,153.76,16.140,60.00,,56.00,";
        String [] items = s.split(",");

        List<String> splittedString = new ArrayList<String>(Arrays.asList(items));
        for (String s1 : splittedString) {
            System.out.println(s1);
        }
        System.out.println("Here");
    }
}

这里最后一个逗号不被视为列表元素。如何更改此代码以使其正常工作。

实际输出:-

2017-07-12 23:40:00.0
153.76
16.140
60.00

56.00
Here

预期输出:-

2017-07-12 23:40:00.0
153.76
16.140
60.00

56.00

Here

【问题讨论】:

  • @NiVeR :不,这里之前没有空行..请检查。
  • @NiVeR : 60.00 后有一个空行,因为它后面有一个逗号。
  • 请显示实际输出
  • @NiVeR :请立即查看更新后的问题。
  • 简化 - 尝试for (String s1 : s.split(",")) { System.out.println(s1); } System.out.println("Here"); - 相同的输出。

标签: java core


【解决方案1】:

将分割线改为:

String [] items = s.split(",", -1);

它应该会如你所愿。这是有限制的版本。检查reference

【讨论】:

    【解决方案2】:

    这是 String#split 的预期行为。

    根据 java 文档。

    此方法的工作方式就像通过调用双参数拆分方法 给定的表达式和零的极限参数。尾随空 因此字符串不包含在结果数组中。

    【讨论】:

    • 虽然这确实解释了split的逻辑,但它并没有解决OP的问题。
    • @NiVeR 正确,它不能解决 OP 的问题,但解释了问题出现的原因。您已经回答了解决方案,这就是为什么我没有把它放在我的答案中。
    猜你喜欢
    • 2013-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-02
    • 1970-01-01
    • 2012-09-04
    • 2017-12-24
    • 1970-01-01
    相关资源
    最近更新 更多