jsの中のreplace Allの実現
1729 ワード
javaでは、文字列はreplacceAllを使用して大域的に置換でき、正規表現において/gを使用したすべての制御変数と同様である。しかし、js文字列自体はreplace All方法をサポートしておらず、簡単なreplace方法しか使用できません。
(String_RegExp)reallyDoは置換された文字列を表し、(String)replacceWidthは置換された文字列を表し、(Boolean)ignoreCaseは大きさ書きを無視するかどうか。
その後のjsコードの中で直接replacceAll方法を使うことができます。
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