ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript 関数 replace_javascript スキルの深い理解

JavaScript 関数 replace_javascript スキルの深い理解

WBOY
WBOYオリジナル
2016-05-16 17:40:341045ブラウズ

replace 関数は 2 つのパラメータを受け入れます。最初のパラメータは文字列または正規表現です。最初のパラメータは文字列または関数も受け入れることができます。

まず第一に、最初のパラメータが文字列の場合、「私は男の子です」.replace("boy","girl") と言う必要はなくなり、出力は次のようになります: "私は女の子です" 。ここで話したいのは、最初のパラメータが正規の場合です。正規表現の場合、置換動作はまずグローバルかどうかに基づいて決定されます (global//g)。all の場合はすべてが置換され、非グローバルの場合は最初に一致した文字列のみが置換されます。例:

コードをコピー コードは次のとおりです:

"Ha Ha".replace(/bw b/g , "He") // He He

"Ha Ha".replace(/bw b/, "He") // He Ha

1: 2 番目のパラメータは文字列です:

特別なマーカー $ が定期的に交換されることが合意されています:

1.$i (i:1-99): 左から右に正規部分表現と一致するテキストを表します。
2.$&: 正規表現に一致する全文を示します。
3.$`(`:スキルキーの切り替え): 一致する文字列の左側のテキストを示します。
4.$'(‘:single quote): 一致する文字列の右側のテキストを示します。
5.$$: $ 送金を意味します。
ここにいくつかのデモがあります:

コードをコピーします コードは次のとおりです:

"男の子と女の子".replace(/(w )s*&s*(w )/g,"$2 & $1") //女の子と男の子

"男の子".replace(/w /g, "$& -$&") // ボーイボーイ

"javascript".replace(/script/,"$& != $`") //javascript != java

"javascript" .replace(/java/,"$&$' is ") // javascript はスクリプト

2: 2 番目のパラメーターは関数です:

JavaScript1.2で実装されているECMAScript3では、replaceメソッドを実行するたびに関数が呼び出され、その戻り値が新しい値として使用されることを推奨します。交換。

関数パラメータの要件:

1. 最初のパラメータは各一致の全文 ($&) です。
2. 中央のパラメータは部分式の一致する文字列です。($i (i:1-99))
3. 最後から 2 番目のパラメータは、一致するテキスト文字列 Location の一致する添え字です。
4. 最後のパラメータは文字列そのものを表します。
この記事で置換の力について述べようとしているのは、理論的なものはすべて無味乾燥なものです。

1: 文字列の最初の文字を大文字にします:

コードをコピー コードは次のとおりです。

String.prototype.capitalize = function() {

return this.replace( /(^|s)([a-z])/g , function(m,p1,p2){ return p1 p2.toUpperCase();

} );

};
console.log("私は男の子です !".capitalize())

出力: 私は男の子です!

2:「張三56点、李斯74点、王武92点、趙劉84点」という文字列の得点を抽出して集計し、平均点を計算し、各人の平均得点差を出力します。

コードをコピー コードは次のとおりです:

var s = "Zhang San 56 ポイント、 Li Si 74 ポイント、Wang Wu 92 ポイント、Zhao Liu 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 "points" "(" ((n > avg) ? ("平均以上のスコア" (n - avg))

:ポイント)";

}



var result = s.replace(/(d )fen/g, f);

console.log (結果);


出力:

Zhang San は 56 ポイント (平均より 20.5 ポイント下)、Li Si は 74 ポイント (平均より 2.5 ポイント下)、Wang Wu は 92 ポイント (平均より 15.5 ポイント上)、Zhao Liu は 84 ポイント (平均より 7.5 ポイント上) を獲得しました。平均) ポイント)

JavaScript の replace 関数と規則性の高度なアプリケーションを組み合わせると、JavaScript の置換によってさらに大きな力がもたらされます。ここでは高度なアプリケーションの規則性の主張については触れません。

出典: http://www.cnblogs.com/whitewolf/

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。