我愿意在Java中阅读下面一行中的一系列数字:
1 80,982 163,8164 170,2620
所以最终我想要结果数组[1, 80, 982, 163, 8164, 170, 2620]
我正在考虑使用扫描仪,但不清楚如何以一种简洁的方式实现它,我可以请一些提示吗?
感谢阅读!
答案 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);
}
我符合以下条件。
(,|\\s)
。如果您有多个分隔符,则可以将其包含在(&|,|@|\\s)
等括号中。在这里查看小提琴。
答案 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