JavaScript如何提取字符串中的全部数字并转为逗号分隔格式
问题根因
你原有代码的逻辑存在3个问题:
- 执行
replace(/[^0-9]/g, '')后,会把原字符串里所有非数字字符全部清除,得到的是连续拼接的纯数字字符串(对应你的输入示例处理后是"531730551935"),此时字符串中没有逗号,调用split(",")不会拆分出单个数字,只会得到一个仅包含完整数字串的数组。 - 你最终需要的是逗号分隔的字符串,不是拆分后的数组,原有逻辑缺少将数字数组拼接为带逗号字符串的步骤。
- 原有代码中没有将待处理的
sentence作为函数入参,运行时如果全局作用域没有定义该变量,会直接抛出未定义报错。
修复方案
方案1(推荐):直接匹配所有数字后拼接
用正则直接匹配字符串中所有单个数字,再用逗号拼接成目标格式:
function printDigits(sentence) { // match匹配不到数字时返回null,加||[]避免join调用报错 const result = (sentence.match(/\d/g) || []).join(',') console.log(result) return result } // 测试用例 printDigits("5om3 wr173 w0rd5 u51n9 numb3r5.") // 输出:"5,3,1,7,3,0,5,5,1,9,3,5"
方案2:基于原有逻辑修改
如果要沿用你原来的替换思路,调整拆分和拼接逻辑即可:
function printDigits(sentence) { // 先清除非数字得到连续数字串,split('')拆分为单个数字的数组,再用逗号拼接 const result = sentence.replace(/[^0-9]/g, '').split('').join(',') console.log(result) return result }
内容的提问来源于stack exchange,提问作者An Chi Lê
相关产品推荐
相关产品推荐

