繁体   English   中英

如何在java.util.Scanner中匹配两个或更多个空格?

[英]How to match two or more spaces in java.util.Scanner?

我有一排数字,应该按空格分开。

但是空间可能长或短,也可能只有一个空间。

我无法编写可正确分割数字的正则表达式。 这是我的尝试:

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    String next = scanner.next();

    System.out.println("split=" + Arrays.toString(next.split("\\s{1,}")));
}

帮助我在数字之间按任意数量的空格分开。

编辑:这是应拆分以获取整数数组的行之一:

108 125 145  48  49  77  65  62  93 121 114 148 134 129 170 

我的尝试是

inputScanner.nextLine().split("\\s{1,}");

谢谢!

使用split("\\\\s+"); 一个或多个空格。

如果只是从扫描仪获取下一个令牌,为什么还要拆分?

String next = scanner.next();

也许你想要

String next = scanner.nextLine();

System.out.println("split=" + Arrays.toString(next.split("\\s+")));

如果要获取整行的整数值,可以执行此操作

String[] numString = next.split("\\s+");
int[] nums = new int[numString.length];

for (int i = 0; i < numString.length; i++){
    nums[i] = Integer.parseInt(numString[i].trim());
}

System.out.println(Arrays.toString(nums));

看来您可以使用List<Integer>轻松解决问题

List<Integer> myList = new ArrayList<>();
while (scanner.hasNextInt()) {
    myList.add(scanner.nextInt());
}

如果您确实需要Integer[]数组,则可以使用

Integer[] array = myList.toArray(new Integer[myList.size()]);

要匹配至少2或更多空格,请使用正则表达式\\s{2,}

System.out.println("split=" + Arrays.toString(next.split("\\s{2,}")));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM