2011-10-10 72 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);