我正在尝试学习与jQuery的模式匹配,我有一个问题......
在php中,我可以这样做:
$find = array("-", "_", "+");
$replace = array("X", "Y", "Z");
$string = "The alphabet ends in -, _, +";
$newstring = str_replace($find, $replace, $string);
将产生:字母以X,Y,Z结尾
有没有办法用jquery来实现这个目的?我可以在哪里定义一个值数组来搜索并用另一个数组中的值替换它们?我知道我可以做一个替换(/ pattern /,“Something”),但是希望能在jquery中复制这个php代码吗?
答案 0 :(得分:0)
请参阅here。
String.prototype.replaceArray = function(find, replace) {
var replaceString = this;
var regex;
for (var i = 0; i < find.length; i++) {
regex = new RegExp(find[i], "g");
replaceString = replaceString.replace(regex, replace[i]);
}
return replaceString;
};
var textarea = $(this).val();
var find = ["<", ">", "\n"];
var replace = ["<", ">", "<br/>"];
textarea = textarea.replaceArray(find, replace);
答案 1 :(得分:0)
这是dup
function str_replace (search, replace, subject, count) {
var i = 0,
j = 0,
temp = '',
repl = '',
sl = 0,
fl = 0,
f = [].concat(search),
r = [].concat(replace),
s = subject,
ra = Object.prototype.toString.call(r) === '[object Array]',
sa = Object.prototype.toString.call(s) === '[object Array]';
s = [].concat(s);
if (count) {
this.window[count] = 0;
}
for (i = 0, sl = s.length; i < sl; i++) {
if (s[i] === '') {
continue;
}
for (j = 0, fl = f.length; j < fl; j++) {
temp = s[i] + '';
repl = ra ? (r[j] !== undefined ? r[j] : '') : r[0];
s[i] = (temp).split(f[j]).join(repl);
if (count && s[i] !== temp) {
this.window[count] += (temp.length - s[i].length) / f[j].length;
}
}
}
return sa ? s : s[0];
}
str_replace(['{name}', 'l'], ['hello', 'm'], '{name}, lars');
Output >> 'hemmo, mars'