【发布时间】:2022-01-14 02:54:32
【问题描述】:
我有一个字符串数组,以及字符串中任意位置的 #number-number 之类的模式。
要求:
-
如果 # 和前面的单个数字由连字符替换,则替换 # 并添加 0。例如,
#162-7878=>162-7878、#12-4598866=>12-4598866 -
如果 # 和前面的两位或多位数字是连字符,则替换删除 #。例如,
#1-7878=>01-7878。 -
如果连字符前面没有# 和个位数,则添加0。例如,
1-7878=>01-7878。
我在 JavaScript 中遇到了困难,该怎么办。这是我使用的代码:
let arrstr=["#12-1676","#02-8989898","#676-98908098","12-232","02-898988","676-98098","2-898988", "380100 6-764","380100 #6-764","380100 #06-764"]
for(let st of arrstr)
console.log(st.replace(/#?(\d)?(\d-)/g ,replacer))
function replacer(match, p1, p2, offset, string){
let replaceSubString = p1 || "0";
replaceSubString += p2;
return replaceSubString;
}
【问题讨论】:
-
去掉#?并将其更改为#,一切顺利!
-
请编辑您的问题
-
@SolomonPByer 感谢您的回复,更新了问题
-
.replace(/^#?(\d+)(?=-\d)/, (_,$1) => $1.padStart(2,"0"))seems working well 够了。
标签: javascript arrays regex string replace