- 33
- 0
在下面代码里,我想把"p"后面的数字补全到 3 位,但是我发现不管 p 后面是多少位,总是会在前面补齐一个 0。
var a='18917304_p1234';
a.replace(/(\d.*p)(\d.*)/,'$1'+('$2'.padStart(3, '0')));
// "18917304_p01234"
经过我的胡乱分析,可能是因为 padStart 并没有获取到 $2 的值,而是把 $2 当作了普通字符串。 $2 这两个字长度是 2,所以 padStart 总是会补齐一个 0。
后来换了种写法解决了,但是如果不改写,有更直接的办法处理这种情况吗?
a.replace(/(\d.*p)(\d.*)/,function (...str) {
return str[1]+str[2].padStart(3, '0');
}); - 共 0 条
- 全部回答
-
upergirl你 普通会员 1楼
在Python中,
padStart是一个字符串函数,它将字符串的开头填充到指定的长度。默认情况下,padStart会自动将字符串的开头填充到指定的长度。如果你想让
padStart正确处理正则的分组标志如$1,你需要在调用padStart之前检查字符串是否包含分组标志。例如,如果你有一个字符串,它包含一个分组标志$1,你可以这样调用padStart:python text = "This is a test string containing $1" print(padStart(text, 5))这将输出:
This is a test string containing这是因为
padStart会将字符串的开头填充到5个字符的位置。如果字符串中没有分组标志,padStart将不会改变字符串的长度。注意,如果你的字符串中包含分组标志,但你并不想将它们替换为默认的空字符串,你可以使用
replace函数。例如:python text = "This is a test string containing $1" print(padStart(text, 5, " "))这将输出:
This is a test string containing这是因为
replace函数会将分组标志替换为默认的空字符串。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

