用字符串替换字符串中的多个字符会重写字符
Replacing multiple characters in a string with a string rewrites characters
我有一个变量(在本例中为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);
使用替换函数,如下所示
var str = "I!%1$s-I!%2$s TTL!%3$s";
var regex = ['[123]', '[456]', '[789]'];
console.log(str.replace(/%('d+)/g, function(match, group1) {
return regex[parseInt(group1) - 1] + group1;
}));
// I![123]1$s-I![456]2$s TTL![789]3$s
RegEx /%('d+)/g
匹配模式%
后面跟着一个或多个数字的任何内容。它将数字作为一个组来捕获。然后将精确匹配和组传递给函数以获得实际的替换。在函数中,使用parseInt
将组转换为数字,并从regex
数组返回相应的值。
相关文章:
- 如何将字符串拆分为字符,但在javascript中保留空格
- 如何显示字符串中最多 200 个字符
- 我想在Javascript中探索类似C语言的字符串的整个字符
- 如何用jquery替换字符串中可能变化的字符
- 通过跳过拆分字符在 javascript 中拆分字符串
- 使用正则表达式匹配长度为六个字符的字母数字字符串
- 字符串替换-不支持格式字符'}'
- 到UpperCase字符串Javascript中的特定字符索引
- 用类javascript包装span标记中字符串中的字符索引
- 将字符串分组为n个字符的块,并应用替换
- 如何检查一个字符串的所有字符是否都存在于另一个字符串中
- 在字符串列表中搜索任何出现的单词,如果单词的第一个字符匹配,则高亮匹配单词.Javascript正则表达式
- Javascript-正则表达式,用于在未转义字符上拆分字符串,例如|,但忽略|
- Regex-从字符第N次出现到字符串末尾的匹配
- Visual Studio 2010跳转到下一个任意字符/字符串
- 估计存储在 localStorage (Javascript) 中的 10,000 个字符字符串的大小
- 字符字符串中最后一个单词的第一个字母
- 匹配任何字符字符串的正则表达式,最多为“/”Javascript
- 将特殊字符字符串到 JSON 字符串化非法令牌中
- 在javascript中计算精确的字符字符串高度