JavaScript関数replaceは深く理解します.
2957 ワード
replace関数は2つのパラメータを受け入れ、最初のパラメータは文字列または正規表現であり、最初のパラメータは同じ文字列を受け入れることができ、また一つの関数かもしれない.
まず最初のパラメータが文字列である場合には、「I am a boy」や「replace」を多く言う必要はありません.出力は「I am a girl」です.ここで言いたいのは、最初のパラメータが正則である場合です.正規表現では、まずグローバルかどうか(大域/g)によって置換挙動が決定されます.すべての場合はすべて置換されます.大域ではないのは、最初のマッチした文字列だけを置換します.たとえば:
正規のreplaceに対して特別なマーカーを予約しました.
1.$i(i:1-99):左から右へ正則のサブ表現にマッチするテキストを表します.2.$&:正規表現にマッチする全文を表します.3.(`:スキルキーの切り替え):マッチする文字列の左のテキストを表します.4.'(':シングル引用符):マッチする文字列の右側のテキストを表します.5.$は$の移動を表します.いくつかのデモが来ます.
ECMAScript 3では、関数方式を推奨し、JavaScript 1.2に実装されています.replace方法が実行されると、毎回この関数を呼び出して、値を差し替えの新しい値として返します.
関数パラメータの規定:
1.最初のパラメータは毎回マッチする全文本($&)です.2.中間パラメータはサブ表現マッチング文字列で、個数は制限されません.($i(i:1-99)3.最後から2番目のパラメータはテキスト文字列にマッチするマッチした下付きの位置です.4.最後のパラメータは文字列自体を表します.これはこの論文で述べたいreplaceの威力が強いところです.理論的なものは全部干物です.あらゆる空虚な問題を解決するために必要な実例があります.
1:文字列の最初の文字を大文字にする:
2:文字列の「張三56分、李四74分、王五92分、趙六84分」の点数をまとめて、平均点を計算して、一人当たりの平均点数の差を出力します.
張三56点(平均点20.5点以下)、李四74点(平均点2.5点以下)、王五92点(平均点15.5点を超えている)、趙六84点(平均点7.5点を超えている)
JavaScriptのreplace関数に正規の高級アプリケーションを加えると、JavaScriptのreplaceはより大きな威力を発揮します.ここでは正規の高級アプリケーションに深く入らないと断言します.
出典:http://www.cnblogs.com/whitewolf/
まず最初のパラメータが文字列である場合には、「I am a boy」や「replace」を多く言う必要はありません.出力は「I am a girl」です.ここで言いたいのは、最初のパラメータが正則である場合です.正規表現では、まずグローバルかどうか(大域/g)によって置換挙動が決定されます.すべての場合はすべて置換されます.大域ではないのは、最初のマッチした文字列だけを置換します.たとえば:
"Ha Ha".replace(/\b\w+\b/g, "He") // He He
"Ha Ha".replace(/\b\w+\b/, "He") //He Ha
1:2番目のパラメータは文字列:正規のreplaceに対して特別なマーカーを予約しました.
1.$i(i:1-99):左から右へ正則のサブ表現にマッチするテキストを表します.2.$&:正規表現にマッチする全文を表します.3.(`:スキルキーの切り替え):マッチする文字列の左のテキストを表します.4.'(':シングル引用符):マッチする文字列の右側のテキストを表します.5.$は$の移動を表します.いくつかのデモが来ます.
"boy & girl".replace(/(\w+)\s*&\s*(\w+)/g,"$2 & $1") //girl & boy
"boy".replace(/\w+/g,"$&-$&") // boy-boy
"javascript".replace(/script/,"$& != $`") //javascript != java
"javascript".replace(/java/,"$&$' is ") // javascript is script
2:2番目のパラメータは関数です.ECMAScript 3では、関数方式を推奨し、JavaScript 1.2に実装されています.replace方法が実行されると、毎回この関数を呼び出して、値を差し替えの新しい値として返します.
関数パラメータの規定:
1.最初のパラメータは毎回マッチする全文本($&)です.2.中間パラメータはサブ表現マッチング文字列で、個数は制限されません.($i(i:1-99)3.最後から2番目のパラメータはテキスト文字列にマッチするマッチした下付きの位置です.4.最後のパラメータは文字列自体を表します.これはこの論文で述べたいreplaceの威力が強いところです.理論的なものは全部干物です.あらゆる空虚な問題を解決するために必要な実例があります.
1:文字列の最初の文字を大文字にする:
String.prototype.capitalize = function(){
return this.replace( /(^|\s)([a-z])/g , function(m,p1,p2){ return p1+p2.toUpperCase();
} );
};
console.log("i am a boy !".capitalize())
出力:I Am A Boy!2:文字列の「張三56分、李四74分、王五92分、趙六84分」の点数をまとめて、平均点を計算して、一人当たりの平均点数の差を出力します.
var s = " 56 , 74 , 92 , 84 ";
var a = s.match(/\d+/g);
var sum = 0;
for(var i = 0 ; i < a.length; i++){
sum += parseFloat(a[i]);
}
var avg = sum / a.length;
function f(){
var n = parseFloat(arguments[1]);
return n + " " + "(" + ((n > avg) ? (" " + (n - avg)) :
(" " + (avg - n))) + " )";
}
var result = s.replace(/(\d+) /g, f);
console.log(result);
出力:張三56点(平均点20.5点以下)、李四74点(平均点2.5点以下)、王五92点(平均点15.5点を超えている)、趙六84点(平均点7.5点を超えている)
JavaScriptのreplace関数に正規の高級アプリケーションを加えると、JavaScriptのreplaceはより大きな威力を発揮します.ここでは正規の高級アプリケーションに深く入らないと断言します.
出典:http://www.cnblogs.com/whitewolf/