Java 提取文本中的所有数字
时间: 2024-04-18 19:24:41 浏览: 15
要从一个文本字符串中提取所有的数字,可以使用正则表达式来匹配数字模式。下面是一个示例代码:
```java
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String text = "Hello 123, this is a test. The number is 4567. Another number is 89.0.";
List<Double> numbers = extractNumbers(text);
for (Double number : numbers) {
System.out.println(number);
}
}
public static List<Double> extractNumbers(String text) {
List<Double> numbers = new ArrayList<>();
// 使用正则表达式匹配数字模式
Pattern pattern = Pattern.compile("-?\\d+(\\.\\d+)?");
Matcher matcher = pattern.matcher(text);
// 提取匹配到的数字,并添加到列表中
while (matcher.find()) {
String numberString = matcher.group();
double number = Double.parseDouble(numberString);
numbers.add(number);
}
return numbers;
}
}
```
在这个例子中,我们定义了一个`extractNumbers`方法,它接收一个文本字符串作为参数,并返回一个包含所有提取到的数字的列表。我们使用正则表达式`-?\\d+(\\.\\d+)?`来匹配数字模式。这个正则表达式可以匹配整数和浮点数,包括正负号和小数点。然后,我们使用`Matcher`对象的`find`方法来提取匹配到的数字,并将其转换为`double`类型后添加到列表中。
在`main`方法里,我们定义了一个测试文本字符串,并调用`extractNumbers`方法来提取其中的数字。然后,我们遍历数字列表并打印出每个数字。
运行以上代码,输出结果如下:
```
123.0
4567.0
89.0
```
可以看到,我们成功地从文本中提取了所有的数字并打印出来。