我有一个变量(在这个例子中是var str = "I!%1$s-I!%2$s TTL!%3$s";
),我想用数组中的元素(var regex = ['aaa', 'bbb', 'ccc'];
)替换其中的%
。
我在网上搜索了一下,并找到了这个解决方案,但我在实现时遇到了问题。我的问题是,我想用多个字符来替换单个字符,然后继续字符串,但这只会覆盖掉那些字符。我实际上不知道为什么。
非常感谢您的帮助,以下是我的代码:
String.prototype.replaceAt = function(index, character) {
return this.substr(0, index) + character + this.substr(index + character.length);
}
var str = "I!%1$s-I!%2$s TTL!%3$s";
var regex = ['replace', 'replace', 'replace'];
//find position of %
var find = /%/gi,
result, pos = [];
while ((result = find.exec(str))) {
pos.push(result.index);
}
//replace % with regex elements
for (x = 0; x < pos.length; x++) {
str = str.replaceAt(pos[x], regex[x]);
}
document.write(str);
pos
。如果我们有一个字符串"abc"
,这里的"c"
是第三个字符。如果我们用"foo"
替换"b"
("afooc"
),那么"c"
现在是第五个字符。 - James Donnelly