我是一个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;
}
}
我有一种感觉,我在想这一切都错了。
答案 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];
});