JavaScript関数replaceパラメータの活用

2730 ワード

JavaScriptにおいてreplace関数は文字列置換関数として機能しており、これは強力な文字列操作関数であり、よくある文字列操作に対する推奨用法である.このエッセイはもっと深く理解します.
       replace関数は2つのパラメータを受け入れ、最初のパラメータは文字列または正規表現であり、最初のパラメータは同じ文字列を受け入れることができ、また一つの関数かもしれない.
      まず最初のパラメータが文字列である場合には、「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に対して特別なマーカーを予約しました.
$i(i:1-99):左から右の正規表現にマッチするテキストを表します.$&:正規表現にマッチする全文を表します.$`(`:スキルキーの切り替え):文字列にマッチする左のテキストを表します.'(':シングル引用符):マッチする文字列の右側のテキストを表します.ドルの移動を表します.いくつかのデモが来ます.
"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方法が実行されると、毎回この関数を呼び出して、値を差し替えの新しい値として返します.
     関数パラメータの規定:
最初のパラメータは毎回マッチする全文本($&)です.中間パラメータはサブ表現マッチング文字列で、個数は制限されません.($i:1-99)最後から2番目のパラメータは、テキスト文字列にマッチするマッチした下付きの位置です.最後のパラメータは文字列自体を表します.これはこの論文で述べたい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())//<span style="color: rgb(51, 51, 51); font-family: Georgia, 'Times New Roman', Times, sans-serif; font-size: 14px; line-height: 25.2000007629395px;">I Am A Boy !</span>
2:文字列の「張三56分、李四74分、王五92分、趙六84分」の点数をまとめて、平均点を計算して、一人当たりの平均点数の差を出力します.
var s = "  56 ,   74 ,   92 ,   84 ";
var a = s.match(/\d+/g);
var avg = a.reduce(function(obj, item){ return obj + parseFloat(item);},0) / a.length; 
var result = s.replace(/(\d+) /g, function(){
 
            var n = parseFloat(arguments[1]);
 
            return n + " " + "(" + ((n > avg) ? ("     " + (n - avg)) :
 
                        ("     " + (avg - n))) + " )";
 
});
console.log(result);
出力:
張三56点(平均点20.5点以下)、李四74点(平均点2.5点以下)、王五92点(平均点15.5点を超えている)、趙六84点(平均点7.5点を超えている)
       JavaScriptのreplace関数に正規の高級アプリケーションを加えると、JavaScriptのreplaceはより大きな威力を発揮します.ここでは正規の高級アプリケーションに深く入らないと断言します.