javascript字符串替换为具有数组值的所有出现

javascript字符串替换为具有数组值的所有出现,javascript,arrays,node.js,string,replace,Javascript,Arrays,Node.js,String,Replace,我想替换所有出现的字符串,但问题是我有一个remove words数组&remove words value 例如: var string = "this is a string to replace. This string should be replaced using javascript"; var replaceArray = ["this","is","string","should","javascript"]; var replaceArrayValue = ["There

我想替换所有出现的字符串,但问题是我有一个remove words数组&remove words value

例如:

var string = "this is a string to replace. This string should be replaced using javascript";

var replaceArray = ["this","is","string","should","javascript"];

var replaceArrayValue = ["There","are","strings","have to","node.js"];

for (var i = replaceArray.length - 1; i >= 0; i--) {

    var finalAns = string.replace(replaceArray[i],replaceArrayValue[i]);
}
我期待着像这样的事情

There are strings to replace. There strings have to be replaced using node.js
我找到了一些解决方案,其中我得到了最好的解决方案。
但是我不能使用
/string/g
中的字符串。我必须使用
replaceArray[I]

如果您希望修复您的方法,您可以使用
RegExp
构造函数来构建带有变量的动态RegExp,并确保只将包含模式的整个单词与单词边界匹配。不要忘记转义文本模式,在循环之前声明
finalAns
,并使用
string
var内容初始化

var string=“这是要替换的字符串。应使用javascript替换此字符串”;
var replaceArray=[“this”、“is”、“string”、“should”、“javascript”];
var replaceArrayValue=[“There”、“are”、“strings”、“have to”、“node.js”];
var finalAns=字符串;
对于(var i=replaceArray.length-1;i>=0;i--){
finalAns=finalAns.replace(RegExp(“\\b”+replaceArray[i])。replace(/[-\/\^$*+?。()[\]{}]/g、\\$&')+“\\b”、“g”)、replaceArrayValue[i]);
}

console.log(finalAns)使用以下具有替换功能的方法:

var string=“这是要替换的字符串。应该使用javascript替换此字符串”,
replaced=string.replace(/\b\w+\b/g,函数($m){
var search=[“this”、“is”、“string”、“should”、“javascript”],
replacement=[“There”、“are”、“strings”、“have to”、“node.js”],
key=search.indexOf($m);
返回(键!=-1)?替换[键]:$m;
});

控制台日志(已替换)无常规Exp

只能设置变量
string=finalAns在循环中。因为每次循环设置旧字符串时都会出现问题

var string = "this is string to replace. this string should replace using javascript";

var replaceArray = ["this","is","string","should","javascript"];

var replaceArrayValue = ["There","are","strings","have to","node.js"];
alert(replaceArray.length);
for (var i = replaceArray.length - 1 ; i >= 0; i--) {

    var finalAns = string.replace(replaceArray[i],replaceArrayValue[i]);
    string =finalAns;
}
alert(finalAns);
片段Exmaple

var string=“这是要替换的字符串。应使用javascript替换此字符串”;
var replaceArray=[“this”、“is”、“string”、“should”、“javascript”];
var replaceArrayValue=[“There”、“are”、“strings”、“have to”、“node.js”];
对于(var i=replaceArray.length-1;i>=0;i--){
var finalAns=string.replace(replaceArray[i],replaceArrayValue[i]);
字符串=finalAns;
}
警报(finalAns)

我使用声明式方法找到了一个解决方案:

const string = 'boo and Boo2'
const dictionary = { boo: 'faa', boo2: 'faa2' }
return string.split(' ')
  .map(word => dictionary[word.toLowerCase()] ?? word)
  .join(' ')
// 'faa and faa2'

你可以
var regex=new RegExp(replaceArray[i],'g')
如果要替换的单词有一个美元($)符号,您将如何处理。@ztalbot使用
replaceArrayValue[i]。replace(/\$/g,$$$$)
哇,您的速度太快了!。我原来的问题编辑得不够快。var string=“$这是要替换的字符串。应使用javascript替换此字符串”;var replaceArray=[“$this”,“is”,“string”,“should”,“javascript”];var replaceArrayValue=[“#There”,“are”,“strings”,“have to”,“node.js”];找到解决方案。我的原始字符串是不同的,我所要做的只是一个基本的finalAns=finalAns.replace(replaceArray[I],replaceArrayValue[I]);应该是正式答案,对我来说很有魅力,用字符串替换类,所有其他答案都会产生问题