JavaScript の replace 関数は文字列置換関数として使用されます。これは強力な文字列操作関数であり、一般的な文字列操作に推奨される使用法です。このエッセイはそれをより深く理解するのに役立ちます。
replace 関数は 2 つのパラメータを受け入れます。最初のパラメータは文字列または正規表現です。最初のパラメータは文字列または関数も受け入れることができます。数 まず第一に、「I am a Boy」についてこれ以上説明する必要はありません。 .replace ("Boy", "Girl"), 出力: "I am a Girl"。ここで話したいのは、最初のパラメータが正規の場合です。正規表現の場合、置換動作はまずグローバルかどうかに基づいて決定されます (global//g)。all の場合はすべてが置換され、非グローバルの場合は最初に一致した文字列のみが置換されます。例:
正規置換には特別なマーカー $ があります:
1. $i (i:1-99): 左から右への正規部分表現を表します。一致したテキスト。
2
3. $`(`:Switch skill key): 一致する文字列の左側のテキストを表します。 (4. $ '(': 一重引用符): 一致する文字列の右側にある正しいテキスト。
5. $$: $ 転送を意味します。
ここにいくつかのデモがあります:
"boy & girl".replace(/(w+)s*&s*(w+)/g,"$2 & $1") //girl & boy
"boy " .replace(/w+/g,"$&-$&") // ボーイボーイ
"javascript".replace(/script/,"$& != $`") //javascript != java
"javascript".replace(/java/,"$&$' is ") // javascript はスクリプトです
2: 2 番目のパラメータは関数です:
ECMAScript3 では function メソッドを使用することをお勧めします。 JavaScript1 .2で実装されており、replaceメソッドが実行されるたびにこの関数が呼び出され、戻り値が置換の新しい値として使用されます。 関数パラメータの規則:
1. 最初のパラメータは、各一致の全文 ($&) です。
2. 中央のパラメータは部分式の一致する文字列です。($i (i:1-99))
3. 最後から 2 番目のパラメータは、一致するテキスト文字列の一致する添字の位置です。
4. 最後のパラメータは文字列そのものを表します。
これが、この記事で置換の力について述べることです。理論的なものはすべて空の問題を解決するための例が必要です:
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: 文字列「Zhang San 56 点、Li Si 74 点、Wang Wu 92 点」のスコア抽出、Zhao Liu 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 ポイント低い) ) )、Li Si は 74 点 (平均より 2.5 点下)、Wang Wu は 92 点 (平均より 15.5 点上)、Zhao Liu は 84 点 (平均より 7.5 点上) を獲得しました
高度な通常のアプリケーションを追加した後、JavaScript replace はより大きな権限を返すため、ここでは通常の高度なアプリケーションのアサーションなどには触れません。