2011-10-10 69 views
1

我想学习模式与jQuery匹配,我有一个问题...jquery查找/替换数组?

在PHP中,我可以做这样的事情:

$find = array("-", "_", "+"); 
$replace = array("X", "Y", "Z"); 

$string = "The alphabet ends in -, _, +"; 
$newstring = str_replace($find, $replace, $string); 

这将产生:字母表中结束X,Y,Z

有没有办法用jQuery来实现这一点?我可以在哪里定义一个值数组来搜索并用另一个数组中的值替换它们?我得到,我可以做一个替换(/模式/,“东西”),但希望有一种方法来复制这个PHP代码在jQuery中?

回答

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' 

检查了这一点http://phpjs.org/functions/str_replace:527

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 = ["&lt;", "&gt;", "<br/>"]; 
textarea = textarea.replaceArray(find, replace);