读取逗号和空格分隔的一行 - java

时间:2013-03-12 03:12:23

标签: java java.util.scanner

我愿意在Java中阅读下面一行中的一系列数字:

1   80,982  163,8164                    170,2620    

所以最终我想要结果数组[1, 80, 982, 163, 8164, 170, 2620]

我正在考虑使用扫描仪,但不清楚如何以一种简洁的方式实现它,我可以请一些提示吗?

感谢阅读!

8 个答案:

答案 0 :(得分:6)

如果是我,我会使用BufferedReader阅读一行,然后使用

String[] values = line.split("[, ]");

我经常发现Scanner不整洁而且有点矫枉过正。

答案 1 :(得分:4)

是的,Scanner类适用于此。

public static void main(String[] args) throws Exception {
    Scanner s = new Scanner(strOrFile).useDelimiter(",| ");
    List<Integer> myList = new ArrayList<Integer>();
    while (s.hasNext()) {
       myList.add(s.nextInt());
    }
}

如果您正在阅读文件,它的效果尤其好。 (为你剪掉工作。)

答案 2 :(得分:2)

扫描仪很好,只需设置所需的分隔符模式,请参阅this

答案 3 :(得分:2)

试试这个:

public static void main(String[] args) {
    String str = "1 80,982 163,8164 170,2620";
    String[] s = str.split(" |,");
    for(String ss:s)
        System.out.println(ss);
}

答案 4 :(得分:2)

由于您需要String [],因此最佳解决方案是String.split

String[] s = str.split("[ ,]+");

答案 5 :(得分:2)

使用下面的正则表达式拆分字符串。

 String input = "1   80,982  163,8164                    170,2620 "; 
        String[] values = input.split("\\s*(,|\\s)\\s*");
        for(String val: values)
        {
            System.out.println(val);

        }

我符合以下条件。

  1. 零个或多个空格(,|\\s)。如果您有多个分隔符,则可以将其包含在(&|,|@|\\s)等括号中。
  2. 逗号和白色空间。
  3. 在这里查看小提琴。

    Java program

答案 6 :(得分:0)

    String ss = "1 80,982 163,8164 170,2620";
    ss = ss.replaceAll(" ", ",");
    String arr[] = ss.split(",");
    for (int i=0;i<arr.length;i++) {
        System.out.println("line "+arr[i]);
    }

答案 7 :(得分:0)

对于带有空格的逗号,空格和逗号的简单输入文件,Rais的正则表达式和Evgeniy的正则表达式都使用了split。在后一种情况下,+号是至关重要的。没有其他选项适用于此数据: 1.0 2.0 3.0 4.0 5.0,6.0 7.0 8.0 9.0 10.0,11.0 12.0