JavaScript新手求助:从12位固定长度字符串提取首非0字符后内容
嘿,作为JavaScript新手碰到这种字符串处理问题太正常啦!我给你几个实用的解决方案,随便挑一个都能搞定你的需求:
方案1:正则表达式(最简洁高效)
这应该是最省心的方法,用正则匹配字符串开头所有连续的0,然后把它们替换成空字符串就行:
const inputStr = '000000000100'; const outputStr = inputStr.replace(/^0+/, ''); console.log(outputStr); // 输出 '100'
简单解释下正则:^表示匹配字符串的起始位置,0+表示匹配一个或多个连续的0,把这些匹配到的内容替换成空,剩下的就是你要的部分啦。
方案2:使用
trimStart方法(ES2019+支持) 如果你用的是比较新的JS环境,可以用trimStart指定要移除的字符是0,不过要注意如果字符串全是0的话,会返回空串,需要额外处理这种边界情况:
const inputStr = '000005000000'; let outputStr = inputStr.trimStart('0'); // 处理全0的情况,比如输入是'000000000000'时返回'0' outputStr = outputStr === '' ? '0' : outputStr; console.log(outputStr); // 输出 '5000000'
方案3:循环查找(适合理解底层逻辑)
要是你想搞清楚具体的执行过程,用循环一步步找第一个非0的位置也是个好办法:
const inputStr = '000000000100'; let firstNonZeroIndex = 0; // 遍历字符串,直到找到第一个不是'0'的字符 while (firstNonZeroIndex < inputStr.length && inputStr[firstNonZeroIndex] === '0') { firstNonZeroIndex++; } // 从找到的位置开始截取字符串 let outputStr = inputStr.slice(firstNonZeroIndex); // 同样处理全0的边界情况 outputStr = outputStr === '' ? '0' : outputStr; console.log(outputStr); // 输出 '100'
三个方法里最推荐正则的写法,一行代码搞定,而且性能也不错。如果是刚学JS,循环的方式能帮你更好理解字符串的索引和截取逻辑~
内容的提问来源于stack exchange,提问作者M. Tritsiniotis
相关产品推荐
相关产品推荐

