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

如何在JavaScript中不使用正则表达式提取字符串中的连续数字?

问题分析

你的代码当前是将每个数字字符单独转换后加入数组,所以会把连续的数字拆分成单个元素。要实现需求,需要区分处理非0开头的连续数字序列和单独的0:非0开头的连续数字需要合并成一个数,每个单独的0直接作为元素加入数组。

修改后的代码
let str = "asdf123d6lkj006m90"
let func = function(inputString){
    let outputArray = []
    let currentNumber = ""
    for(let element of inputString){
        // 判断当前字符是否为有效数字
        if (!isNaN(element) && element.trim() !== '') {
            if (currentNumber === "") {
                if (element === "0") {
                    // 单独的0直接加入数组
                    outputArray.push(0);
                } else {
                    // 非0开头,开始累积连续数字
                    currentNumber += element;
                }
            } else {
                // 已有累积的非0开头数字,继续追加
                currentNumber += element;
            }
        } else {
            // 遇到非数字字符,处理累积的数字
            if (currentNumber !== "") {
                outputArray.push(Number(currentNumber));
                currentNumber = "";
            }
        }
    }
    // 遍历结束后,处理剩余的累积数字
    if (currentNumber !== "") {
        outputArray.push(Number(currentNumber));
    }
    return outputArray;
}
console.log(func(str)) // 输出: [123, 6, 0, 0, 6, 90]
代码逻辑说明
  1. 用currentNumber变量累积非0开头的连续数字字符;
  2. 遇到单个0时,直接将0加入结果数组,不进行累积;
  3. 遇到非0的数字字符且当前无累积时,开始累积连续数字;
  4. 遇到非数字字符时,将累积的数字转换为数值加入数组,并清空累积变量;
  5. 遍历结束后,检查是否有未处理的累积数字,确保最后一段数字被加入数组。

内容的提问来源于stack exchange,提问作者Enedwaith

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 18:15:41