Javascript全局字符串替换为数组中的不同元素?

时间:2014-06-04 15:26:38

标签: javascript regex string replace

我是一个Javascript noob,在javascript中使用正则表达式来全局替换网页上的文本。很容易。

v = v.replace(/\Simon\b/g, "JS Noob");

我知道我可以用功能代替,但我无法让它工作:

v = v.replace(/\bSimon\b/g, function(replaceLoop) {
    var myStringArray = ["herp","derp","clueless","hurrrrr"];
    var arrayLength = myStringArray.length;
    for (var i = 0; i < arrayLength; i++){
        replaceLoop = myStringArray;
        return replaceLoop;
    } 
}

我有一种感觉,我在想这一切都错了。

2 个答案:

答案 0 :(得分:2)

步骤1,创建一个每次从数组返回下一项的函数

function iterGen(arr, i) {
    i || (i = 0);
    return function () {
        i %= arr.length;
        return arr[i++];
    };
}

第2步,将其传递给您的替换

v = v.replace(/\bSimon\b/g, iterGen(["herp","derp","clueless","hurrrrr"]));

答案 1 :(得分:0)

快速语法错误导致问题,您错过了结束);.replace()。此外,您正在设置replaceLoop = myStringArray而不是特定字符串。假设您需要随机索引,则需要Math.random()

v = v.replace(/\bSimon\b/g, function(replaceLoop) {
    var myStringArray = ["herp","derp","clueless","hurrrrr"];
    var arrayLength = myStringArray.length;
    var index = Math.floor(Math.random() * arrayLength);

    return myStringArray[index];
});