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
等对其进行解析。另见: