Java字符串提取连续数字
简介
在Java中,有时我们需要从一个字符串中提取连续的数字。这在处理文本数据时非常常见,比如从一个字符串中提取出手机号码、邮政编码等。本文将教你如何实现Java字符串提取连续数字的方法。
整体流程
整体来说,我们需要实现以下步骤来提取连续的数字:
journey
title 提取连续数字流程
section 初始化
section 查找数字起始位置
section 提取数字
section 查找下一个数字起始位置
section 循环提取数字
section 输出结果
下面我们将逐步讲解每个步骤的具体实现。
初始化
在开始之前,我们需要做一些初始化操作。首先,我们需要定义一个存储提取到的数字的列表,用于最后输出结果。接着,我们需要定义两个变量,start
和end
,用于记录每个数字的起始和结束位置。最后,我们需要定义两个变量,hasNumber
和isNumber
,用于判断当前位置是否为数字的一部分。
List<String> numbers = new ArrayList<>();
int start = -1; // 记录数字的起始位置
int end = -1; // 记录数字的结束位置
boolean hasNumber = false; // 判断当前位置是否为数字的一部分
boolean isNumber = false; // 判断当前位置是否为数字
查找数字起始位置
在提取连续数字之前,我们需要先找到第一个数字的起始位置。我们可以通过循环遍历字符串的每个字符,检查当前字符是否为数字。
for (int i = 0; i < input.length(); i++) {
char c = input.charAt(i);
if (Character.isDigit(c)) {
start = i; // 记录数字的起始位置
hasNumber = true;
break;
}
}
在这段代码中,我们通过Character.isDigit(c)
方法判断当前字符是否为数字。如果是数字,我们将其位置记录为数字的起始位置,并将hasNumber
设为true
。
提取数字
一旦找到数字的起始位置,我们就可以开始提取连续的数字了。我们可以通过循环遍历字符串的每个字符,检查当前字符是否为数字。
for (int i = start + 1; i < input.length(); i++) {
char c = input.charAt(i);
if (Character.isDigit(c)) {
if (!isNumber) {
start = i; // 记录数字的起始位置
isNumber = true;
}
end = i; // 记录数字的结束位置
} else if (isNumber) {
// 提取数字
String number = input.substring(start, end + 1);
numbers.add(number);
isNumber = false;
}
}
在这段代码中,我们先判断当前字符是否为数字。如果是数字,我们将其位置记录为数字的结束位置。如果不是数字,我们就提取出之前找到的数字,并将其添加到结果列表中。
查找下一个数字起始位置
在提取完一个数字后,我们需要继续查找下一个数字的起始位置。我们可以通过循环遍历字符串的每个字符,检查当前字符是否为数字。
for (int i = end + 1; i < input.length(); i++) {
char c = input.charAt(i);
if (Character.isDigit(c)) {
start = i; // 记录数字的起始位置
break;
}
}
在这段代码中,我们通过Character.isDigit(c)
方法判断当前字符是否为数字。如果是数字,我们将其位置记录为数字的起始位置。
循环提取数字
通过不断重复上述步骤,我们可以循环提取出所有连续的数字。
while (start != -1) {
// 提取数字
String number = input.substring(start, end + 1);
numbers.add(number);
// 查找下一个数字起始位置
for (int i = end + 1; i < input.length(); i++) {
char c = input.charAt(i);
if (Character.isDigit(c)) {
start = i; // 记录数字的起始位置
break;
}
}
// 重置结束位置
end