ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript replace()の第2引数が関数の場合のパラメータの使い方(誰でも詳しく解説)

JavaScript replace()の第2引数が関数の場合のパラメータの使い方(誰でも詳しく解説)

亚连
亚连オリジナル
2018-05-19 13:45:432544ブラウズ

replace() 関数には 2 つのパラメータを指定できます。最初のパラメータは置換する文字列または置換する文字列に一致する正規表現です。 replace() 関数に関するいくつかのコード例を見てみましょう。JavaScript の replace() の 2 番目のパラメーターは関数のパラメーターです:

replace() 関数には replace 関数があり、2 つのパラメーターを持つことができます。 1 つのパラメーターには、置換される文字列または置換される文字列に一致する正規表現を指定できます。2 番目のパラメーターには、置換テキストまたは関数を指定できます。 replace() 関数のコード例をいくつか見てみましょう。

コード例:

例 1:

<script>
var str="I love jb51 and you?";
console.log(str.replace("jb","java"));
</script>

上記のコードは、文字列内の最初に指定された部分文字列のみを置換できます。

例 2:


<script>
var str="I love jb51 and you?";
var reg=/jb/g;
console.log(str.replace(reg,"java"));
</script>

上記のコードは、文字列内の指定されたすべての部分文字列を置き換えることができます。

例 3:


<script>
var str="I love jb51 and you?";
console.log(str.replace("jb",function(){
 return "java"}
));
</script>

上記のコードでは、2 番目のパラメーターは関数であり、この関数の戻り値を使用して文字列内の指定された部分文字列を置き換えることができます。 2 番目のパラメーターが関数の場合、その関数は実際にパラメーターを渡すことができます。コード例を通して関数のパラメーターの問題を紹介します。

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


<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<title>脚本之家</title>
<script type="text/javascript">
var url = "http://www.jb51.net/o.php?mod=viewthread&tid=14743&extra=page%3D1";
//第一参数为字符串
console.group("字符串");
var oneResult = url.replace("www.jb51.net",function(){
 console.log("replace输入参数:%o",arguments);
 var val = /www.jb51.net/.exec(url);
 
 console.log("exec输出参数:%o",val);
              
 console.assert(arguments[0] === val[0]);
 console.assert(arguments[1] === val["index"]);
 console.assert(arguments[2] === val["input"]);
 return "jb51";
});
console.log("replace返回字符串:"+oneResult);
console.groupEnd("字符串");
    
//第一参数为正则表达式
console.group("正则表达式");
var regexp_global = /[?&](\w+)=([^&]*)/g;
var count = 0;
var twoResult = url.replace(regexp_global,function(){
 console.log("第"+(count++)+"次运行");
 console.log("replace输入参数:%o",arguments);
 var val = regexp_global.exec(url);
 console.log("exec输出参数:%o",val);
              
 console.assert(arguments[0] === val[0]);
 console.assert(arguments[1] === val[1]);
 console.assert(arguments[2] === val[2]);
 console.assert(arguments[3] === val["index"]);
 console.assert(arguments[4] === val["input"]);
 return count;
});
console.log("replace返回字符串:"+twoResult);
console.groupEnd("正则表达式");
</script>
</head>
<body>
 
</body>
</html>

上記のコードでは、replace() 関数の最初のパラメーターが通常の文字列と正規表現の場合、関数の 2 番目のパラメーターがそのパラメーターを渡すことを示しています。それぞれ以下のとおりです。 簡単に説明します:

最初のパラメータは通常の文字列です:


最初のパラメータが通常の文字列の場合、元の文字列の最初の部分文字列のみが置き換えられます。元の文字列の最初の部分文字列が置換され、関数に渡されるパラメータは、通常の文字列パラメータを正規表現として使用して exec() 関数によって返される配列の要素と同じになります。

最初のパラメータは正規表現です:


スペースの都合上、ここでは実行結果の一部のみがインターセプトされます。replace() 関数の最初のパラメータは正規表現であり、次に 2 番目のグローバル マッチングが実行されます。関数パラメータは複数回呼び出され、毎回渡されるパラメータは、regexp_global.exec(url) によって返される配列の要素と同じです。

上記は私があなたのためにまとめたものです。

関連記事:

jsを使って今年の今日の週を取得する(小さなサンプル、ソースコード付き)

HTML+CSS+JSの話(詳しい説明)


概要JS コードを最適化する方法 (グラフィック チュートリアル)


以上がJavaScript replace()の第2引数が関数の場合のパラメータの使い方(誰でも詳しく解説)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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