java中如何从字符串中提取数字

java中如何从字符串中提取数字,java,Java,我编写的程序接收这样的输入 W 12.1 -1 2.2 B 1.2 3.2 1 我需要检查这些数字是否在坐标系内,所以我的想法是将这些数字作为整数存储在数组中。数字需要用空格和圆点隔开。目前我有以下代码: public static void main(String[] args) { Scanner reader = new Scanner (System.in); String input = reader.nextLine(); String[] numbers

我编写的程序接收这样的输入

W 12.1 -1 2.2
B 1.2 3.2 1
我需要检查这些数字是否在坐标系内,所以我的想法是将这些数字作为整数存储在数组中。数字需要用空格和圆点隔开。目前我有以下代码:

public static void main(String[] args) {
    Scanner reader = new Scanner (System.in);
    String input = reader.nextLine();
    String[] numbers = input.substring(2,input.length()).split("\\.");
    System.out.println(Arrays.toString(numbers));
        }
对于输入
w12.1-12.2
来说,输出是
[12,1-12,2]
,正如您所见,我设法处理了点,但我无法删除空白。实现我的任务最节省资源的方式是什么

数字需要用空格和圆点隔开

应用
replaceAll(“\\s”,“)
替换空格

String[] numbers = input.replaceAll("\\s", ".").substring(2,input.length()).split("\\.");
或者在split()中使用另一个同时接受
空格的正则表达式
字符:

String[] numbers = input.substring(2,input.length()).split("\\.|\\s");
使用.split()并将数组从索引1返回到分隔符(空格,
split(“\\s”)
)上数组1的长度,然后处理每个元素并检查它是否为数字。您可以手动执行此操作,也可以使用简单的正则表达式匹配,如
-?\\d+\.?\\d+
或尝试使用
Integer\parseInt
Double\parseDouble
等对其进行解析。另见: