chi*_*iya 7 javascript arrays string replace node.js
我想替换所有出现的字符串,但问题是我有一个删除单词和删除单词值的数组。
例如 :
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]);
}
Run Code Online (Sandbox Code Playgroud)
我期待类似的事情
There are strings to replace. There strings have to be replaced using node.js
Run Code Online (Sandbox Code Playgroud)
我找到了一些解决方案,其中我在这里得到了最佳解决方案。但我不能使用 中的字符串/string/g。我必须使用replaceArray[i]
如果您更喜欢修复您的方法,您可以使用RegExp构造函数来构建带有变量的动态正则表达式,并确保仅匹配包含单词边界的模式的整个单词。不要忘记转义文字模式,并finalAns在循环之前声明并使用stringvar 内容进行初始化。
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"];
var finalAns = string;
for (var i = replaceArray.length - 1; i >= 0; i--) {
finalAns = finalAns.replace(RegExp("\\b" + replaceArray[i].replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&') + "\\b", "g"), replaceArrayValue[i]);
}
console.log(finalAns);Run Code Online (Sandbox Code Playgroud)
请注意,Roman使用单个静态正则表达式的方法似乎对于当前任务来说是最有效的(不需要每次都动态构建正则表达式)。