我有一排数字,应按空格分割。
但是空间可能很长或很短,或者只是单个空间。
我无法编写正确分割数字的正则表达式。这是我的尝试:
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,}");
谢谢!
答案 0 :(得分:2)
将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));
答案 1 :(得分:2)
您似乎可以使用List<Integer>
List<Integer> myList = new ArrayList<>();
while (scanner.hasNextInt()) {
myList.add(scanner.nextInt());
}
以后如果你真的需要Integer[]
数组,你可以用
Integer[] array = myList.toArray(new Integer[myList.size()]);
答案 2 :(得分:0)
要匹配至少2
个或更多空格,请使用正则表达式\s{2,}
System.out.println("split=" + Arrays.toString(next.split("\\s{2,}")));