[英]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.