这个 Perl 脚本是我想用 JavaScript ( source ) 实现的:
s/([0-9]+)/sprintf('%04d',$1)/ge;
显然 sprintf 在 JavaScript 中不可用,但我知道您可以构建一个直接处理关注数的函数,但是在我的例子中,我有一个很长的字符串,其中可能包含多个要转换的数字像这样的字符串:abc8 23 123
变成:abc000008 000023 000123
(以 6 位数字为例)。
所以它要么是一些我不明白的聪明的正则表达式,要么是找到了某种方法将长字符串拆分为一个由不同的字符串和数字组成的数组,并且只对数字一个接一个地进行操作。
我真的想避免后一种方法,因为 1) 在这种情况下速度是一个问题,并且 2) 在正确位置拆分字符串所涉及的正则表达式似乎比此时添加前导零更难。
最后,还有其他方法可以用 JavaScript 的正则表达式来解决吗?
最佳答案
您可以使用正则表达式来查找数字,并将它们替换为函数中的值:
s = s.replace(/\d+/g, function(m){
return "00000".substr(m.length - 1) + m;
});
关于JavaScript,正则表达式,将前导零添加到字符串中包含的所有数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9812610/