我有一句话:
Visit5Our3Mini4Lab3!
我想在每个数字后添加一个分隔“_”。我的数字总是<6,所以我只有一位数字。
我找到了一种方法来循环从0到5,所以在第一个转弯我替换所有“0”,然后全部“1”,等等。遗憾的是,这只替换了我的数字的第一次出现(不是全局)。
for (i=0; i<6; i++) { str = str.replace(i, i+"_"); // this work once only
有没有办法将.replace()
与变量i
一起使用?
for (i = 0; i < 6; i++) { str = str.replace(/i/g, i+"_"); // replace all characters "i", NOT what I want.
如何在.replace()的第一个参数中获取变量,然后让它全局工作。
http://www.w3schools.com/jsref/jsref_replace.asp
编辑:我也尝试过:
for (i = 0; i < 6; i++) {
var trick = "/"+i+"/g";
trick = trick.toString();
str = str.replace(trick, i+"_");
}
它不起作用。还有其他技巧吗?
答案 0 :(得分:4)
使用带有g
(全局)标志的正则表达式:
str = str.replace(/([0-6])/g, "$1_");
这使用括号来捕捉匹配,匹配由0
- 6
(包括0
和6
)中的任意数字组成,{ {1}}在整个字符串中搜索每个匹配项。 g
代表第一个捕获匹配,并将其与随后的$1
一起放入替换中。
答案 1 :(得分:3)
您也可以使用功能!
"Visit5Our3Mini4Lab3!".replace(/\d/g, function(match) { return match + "_"; });
输出
"Visit5_Our3_Mini4_Lab3_!"
答案 2 :(得分:2)
试试这个:
str = str.replace(/\d/g, "$&_");
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace
对此进行了描述