JavaScript関数replace

6346 ワード

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:         :
正規のreplaceに対して特別なマーカーを予約しました.
  • $i(i:1-99):左から右へ正則のサブ表現にマッチするテキストを表します.
  • ドル&:正規表現にマッチする全文本を表します.
  • (`:スキルキーの切り替え):マッチする文字列の左側のテキストを表します.
  • '(':シングル引用符):マッチする文字列の右側のテキストを表します.
  • ドル:ドルの移動を表します.
  • いくつかのSampleをください.
    "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(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())
     
     
    出力: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はより大きな威力を発揮します.ここでは正規の高級アプリケーションに深く入らないと断言します.