You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 07:45:35