无法在Javascript中基于Array替换String部分

时间:2011-06-14 08:13:51

标签: javascript jquery

我有两个数组,一个用于案例,另一个用于b案例。我希望bodyTags字符串由一个或多个不同的arr1项目替换为arr2中具有相同索引的项目。

以下代码不起作用。如果您可以修复它或建议我如何使用jQuery实现预期的效果,这将真正帮助我。

var arr1 = ["1a", "2a", "3a", "4a", "5a", "a6", "7a", "8a", "9a"];
var arr2 = ["1b", "2b", "3b", "4b", "5b", "6b", "7b", "8b", "9b"];

    var bodyTags = 'something a1 got funcky a6';

    for (var i = 0; i < arr1.length; i++) {
        bodyTags = bodyTags.replace(/arr1[i]/gi, arr2[i]);
    }

3 个答案:

答案 0 :(得分:2)

在正则表达式中,arr1[i]将从字面上理解。如果您想拥有动态表达式,则必须使用RegExp

bodyTags.replace(new RegExp(arr1[i],'gi'), arr2[i]);

答案 1 :(得分:1)

可能是这个吗?

for (var i = 0; i < arr1.length; i++) {
    myregexp = new RegExp(arr1[i], "gi");
    bodyTags = bodyTags.replace(myregexp, arr2[i]);
}

答案 2 :(得分:1)

我相信这就是你需要的

var arr1 = ["1a", "2a", "3a", "4a", "5a", "a6", "7a", "8a", "9a"];
var arr2 = ["1b", "2b", "3b", "4b", "5b", "6b", "7b", "8b", "9b"];

var bodyTags = 'something 1a got funcky a6';

for (var i = 0; i < arr1.length; i++) {
    var re = new RegExp(arr1[i],"gi");
    bodyTags = bodyTags.replace(re, arr2[i]);
}

2件事:

  1. bodyTags包含不在第一个数组中的a1
  2. 问题是/ arr1 [1] /没有查找arr [1]的值并将其连接到regexp它唯一的硬编码arr1 [i]意味着regexp将匹配像'arr1'这样的字符串