jsの中のreplace Allの実現

1729 ワード

javaでは、文字列はreplacceAllを使用して大域的に置換でき、正規表現において/gを使用したすべての制御変数と同様である。しかし、js文字列自体はreplace All方法をサポートしておらず、簡単なreplace方法しか使用できません。
1 var a = "xxxxx";
2 alert(a.replace("x","a"));  //   axxxx
簡単なreplaceを使って最初のマッチのみを交換することができます。これはいくつかの需要に不便かもしれません。もちろん、グローバルな置換は、以下のように実現されてもよい。
1 var a = "xxxxx";
2 alert(a.replace(/x/g,"a"));  //   aaaaa
しかし、優秀なプログラマーはみんな「怠け者」です。グローバルに交替するたびに、正しい方法で実現したくないです。答えは肯定的です。コードに下記のコードを入れるだけです。
1 String.prototype.replaceAll = function(reallyDo, replaceWith, ignoreCase) {  
2     if (!RegExp.prototype.isPrototypeOf(reallyDo)) {  
3         return this.replace(new RegExp(reallyDo, (ignoreCase ? "gi": "g")), replaceWith);  
4     } else {  
5         return this.replace(reallyDo, replaceWith);  
6     }  
7 }  
ここではStringの関数(native Codeを追加したものに相当)replacceAllを追加しました。
(String_RegExp)reallyDoは置換された文字列を表し、(String)replacceWidthは置換された文字列を表し、(Boolean)ignoreCaseは大きさ書きを無視するかどうか。
その後のjsコードの中で直接replacceAll方法を使うことができます。
1 var a = "xxxxx";
2 alert(a.replaceAll("x","a"));  //   aaaaa