如何使用Java从指定字符串中提取数字并生成目标数字数组
Java提取字符串中所有数字的实现方法
核心思路
通过正则表达式匹配字符串中所有连续的数字片段,将匹配结果转为整数类型时自动去除前导零,最终组装得到目标数字数组,不需要额外处理HTML标签、特殊符号等非数字内容。
完整实现代码
import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; public class ExtractNumbersDemo { public static void main(String[] args) { String sourceStr = "<p>216 Kleopatra is visible in the dawn sky, rising at 23:11 (KST) and reaching an altitude of 52° above the south-eastern horizon before fading from view as dawn breaks around 03:51.</p>"; List<Integer> numList = new ArrayList<>(); // 定义正则:匹配所有连续数字序列 Pattern numPattern = Pattern.compile("\\d+"); Matcher matcher = numPattern.matcher(sourceStr); while (matcher.find()) { // 字符串转整数,自动去除前导零,例如"03"会转为3 Integer num = Integer.parseInt(matcher.group()); numList.add(num); } Integer[] targetArray = numList.toArray(new Integer[0]); // 打印结果验证 System.out.println(Arrays.toString(targetArray)); } }
实现说明
- 正则
\d+在Java字符串中需要转义写为\\d+,可以匹配任意长度的连续数字,自动跳过所有非数字字符,无需提前剥离HTML标签、标点、特殊符号 Integer.parseInt()方法转换数字字符串时会自动忽略前导的无效0,刚好满足示例中03转换为3的需求- 代码运行后控制台输出为
[216, 23, 11, 52, 3, 51],和预期结果完全一致
内容的提问来源于stack exchange,提问作者Siwoo Park
相关产品推荐
相关产品推荐

