我想替换一个字符串/多行的多个单词。关键字和替换词由对象数组组成。 它完美适用于数组中的第一个对象,但不适用于数组中的其他对象。
var aString = 'I have many animals, for Example a Dog, a little Mice, a Kangaroo I´ve got as well, and I even have got a Cat.';
var Array = new Array();
array[0].firstanimal = 'Dog';
array[0].secondanimal = 'Cat';
array[1].firstanimal = 'Mice';
array[1].secondanimal = 'Kangaroo';
function replaceSomething(aString) {
for (i = 0; i < array.length; i++) {
mynewString = aString.replace(array[i].firstanimal, array[i].secondanimal);
}
return mynewString;
}
答案 0 :(得分:0)
您将不得不在第二次迭代中对替换后的字符串returnThis
调用replace,依此类推,或者只是对传递的字符串进行突变:
function replaceDescription(aString) {
for (i = 0; i < arrayOfObjects.length; i++) {
aString = aString.replace(arrayOfObjects[i].item1, anyfunction(arrayOfObjects[i].item2).length).replace(arrayOfObjects[i].item3, anotherfunction(anyfunction(arrayOfObjects[i].item2)));
}
return aString;
}
然后,您还摆脱了该隐式全局(错误!)变量。
答案 1 :(得分:0)
这里是一个例子,我不知道您的带有关键字/替换的对象是什么样的,所以我做了我自己的对象。
var text = 'This is my text that i want to replace keywords with values in';
var map = [ {keyword: 'text', replacement: 'butts'},
{keyword: 'want', replacement: 'butts'}]
map.forEach(function(value, index){
text = text.replace(new RegExp(value.keyword, 'g'), value.replacement);
});
console.log(text);