我有这样一句话:
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+"_");
}
这是行不通的。还有其他技巧吗?
最佳答案
使用正则表达式,使用 g
(全局)标志:
str = str.replace(/([0-6])/g, "$1_");
这使用括号来捕获匹配,匹配由 0
-6
中的任意数字组成(包括 0
和6
),g
搜索整个字符串中的每个 匹配项。 $1
表示第一个捕获的匹配项,并将其与后面的 _
一起放入替换中。
关于javascript - JS .replace(海峡, 海峡) : how to get a variable in parameter 1 yet work globally?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19799264/