JavaScript 類似於 PHP str_replace 的 3 種方法


由於在編寫新的聊天室系統,所以用到了這方法..
在和 SR 大討論後又再得到了新的方法..

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<script>
// 這是網上找來的
function strReplace(search, replace, string) {
var result = "", oldi = 0;
for (i=string.indexOf(search); i>-1; i=string.indexOf(search, i)) {
result += string.substring(oldi, i);
result += replace;
i += search.length;
oldi = i;
}
return result + string.substring(oldi, string.length);
}

// 這是一個程序中找的
function strReplace2(t, p, s) {
if(s==null || t==null || t.length==0) return s;
if(p==null) p='';
var s1 = s;
var s2 = '';
var i;
while(s1.indexOf(t) >= 0) {
i = s1.indexOf(t);
s2 = s2+s1.substring(0,i)+p;
s1 = s1.substring(i+t.length);
}
s2 = s2+s1;
s = s2;
s2 = i = null;
return s;
}

// SR 大提供後,再經我簡化的版本
function strReplace3(qa, qb, qc) {
return unescape(escape(qc).replace(/\*/g, "%2A").replace(new RegExp(escape(qa),"g"),qb));
}

alert(strReplace('{$ab}','XXX','+aaaaaaaa{$ab}bbbbbbbbbbddddd'));
alert(strReplace2('{$ab}','XXX','+aaaaaaaa{$ab}bbbbbbbbbbddddd'));
alert(strReplace3('{$ab}','XXX','!@#$%^&*()+aaaaaaaa{$ab}bbbbbbbbbbddddd'));
</script>