在JavaScript中如何移除字符串非数字内容并提取完整整数值
JavaScript 从混合字符串中提取整数值的实现方案
JavaScript 没有内置专门用于移除字符串中所有非数字内容的全局函数,可通过正则表达式+字符串替换实现需求,该方案写法简洁性能优异,可覆盖绝大多数业务场景:
const String1 = '122,730 views' const String2 = '2,990 likes' // 核心逻辑:/\D/ 匹配所有非数字字符,g标识全局匹配,替换为空后转为数字即可 const extractInteger = (str) => Number(str.replace(/\D/g, '')) console.log(extractInteger(String1)) // 输出 122730 console.log(extractInteger(String2)) // 输出 2990
为什么parseInt不符合需求
parseInt()的解析逻辑是从字符串开头逐字符匹配数字规则,遇到第一个不符合数字规则的字符就会终止解析,你提供的字符串中第一个逗号就触发了终止逻辑,所以只能拿到逗号前的部分数值。
超大量数据场景的极致性能方案
如果你需要处理十万级以上的大批量字符串,可采用字符遍历的方式实现,性能比正则方案高10%~20%左右:
function extractIntegerFast(str) { let numStr = '' for(let i = 0; i < str.length; i++) { const char = str[i] if(char >= '0' && char <= '9') numStr += char } return Number(numStr) }
内容的提问来源于stack exchange,提问作者Alen
相关产品推荐
相关产品推荐

