JavaScript中replace

3720 ワード

ECMAScript v 3 規定する メソッドのパラメータ replace ment 文字列ではなく関数でも大丈夫です.この場合、各マッチは関数を呼び出します.戻りの文字列は置換テキストとして使用されます.関数の最初のパラメータはマッチングモードの文字列です.次のパラメータはモードのサブ表現にマッチする文字列です. 0 このようなパラメータが複数あります.次のパラメータは整数です. ストリングスObject に表示される位置です.最後のパラメータは ストリングスObject 自分自身
strigObject.replace(regexp/substr,replace)
var str="abc123";
str=str.replace(/[A-Za-z]{3}|[0-9]{3}/g,function(a){
switch(a){
case "abc":return "ABC";
case "123":return "One Two Three";
}
});
alert(str);
ABCOne 私  Thre
JavaScriptにおいてreplace関数は文字列置換関数として機能しており、これは強力な文字列操作関数であり、よくある文字列操作に対する推奨用法である.このエッセイはもっと深く理解します.
       replace関数は2つのパラメータを受け入れ、最初のパラメータは文字列または正規表現であり、最初のパラメータは同じ文字列を受け入れることができ、また一つの関数かもしれない.
      まず最初のパラメータが文字列であるために、私たちはこれ以上話す必要がありません. ラム a. boy".replace("boy","girl"),出力:"I ラム a. ガールここで言いたいのは、最初のパラメータが正則である場合です.正規表現では、まずグローバルかどうか(大域/g)によって置換挙動が決定されます.すべての場合はすべて置換されます.大域ではないのは、最初のマッチした文字列だけを置換します.たとえば:

「は」 Ha".replace(/\b\w+\b/g, 「He」)  // He He
 
「は」 Ha".replace(/\b\w+\b/, 「He」)  //He Ha
1:2番目のパラメータは文字列:
    正規のreplaceに対して特別なマーカーを予約しました.
  • $i (イ:1-99) : 左から右への正規表現にマッチするテキストを表します.
  • ドル&:正規表現にマッチする全文本を表します.
  • (`:スキルキーの切り替え):マッチする文字列の左側のテキストを表します.
  • '(':シングル引用符):マッチする文字列の右側のテキストを表します.
  • ドル:ドルの移動を表します.
  • いくつかのデモが来ます.

    「boy」 & girl".replace(/)\s*&\s*(\w+)/g,"2 & $1") //ガール & boy
     
    「boy」.replace(/\w+/g,「$&-」) // boy-boy
     
    「javascript」.replace(/script/、「$ != $`") //javascript != java
     
    「javascript」.replace(/java/、「$」) is ") // javascript is スクリプト
    2:2番目のパラメータは関数です.
          ECMAScript 3では、関数方式を推奨し、JavaScript 1.2に実装されています.replace方法が実行されると、毎回この関数を呼び出して、値を差し替えの新しい値として返します.
         関数パラメータの規定:
  • 最初のパラメータは各マッチングの全文本($).
  • 中間パラメータはサブ表現マッチング文字列であり、数は制限されません. $i (i:1-99)
  • 最後から2番目のパラメータは、テキスト文字列にマッチするマッチした下付きの位置です.
  • 最後のパラメータは文字列自体を表します.
  • これはこの論文で述べたいreplaceの威力が強いところです.理論的なものは全部干物です.あらゆる空虚な問題を解決するために必要な実例があります.
    1:文字列の最初の文字を大文字にする:

    String.prototype.cportalize = function(){
     
        return this.replace /(^|\s)([a-z])/g , function(m,p 1,p 2){ return p 1+p 2.toUpperCase()
     
        } );
     

    consolie.log("i" ラム 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
     
      
     
    機能 f(){
     
                var n = parseFloat(argments[1]);
     
                return n + 「分」 + 「(」 + (n) > avg ? (「平均以上」 + (n - avg) :
     
                            (「平均以下」 + (avg - n) + 「分」
     
    )
     
      
     
    var レスリング = s.replace(/(\d+)分/g、 f)
     
    consolone.logt;
     
    出力:
    張三56点(平均点20.5点以下)、 李四74点(平均点より2.5点低い)、 王五92点(平均点を超えて15.5点)、 趙六84点(平均点を超えて7.5点)
           JavaScriptのreplace関数に正規の高級アプリケーションを加えると、JavaScriptのreplaceはより大きな威力を発揮します.ここでは正規の高級アプリケーションに深く入らないと断言します.