ホームページ ウェブフロントエンド jsチュートリアル javascript_javascript スキルで引数を使用して string.format 関数を実装する

javascript_javascript スキルで引数を使用して string.format 関数を実装する

May 16, 2016 pm 06:20 PM
format string

以下は、ソース コードの抜粋と、彼の設計と実装のアイデアの詳細な分析です。


function format(string) {
var args = argument;
var pattern = new RegExp("%([1-" argument.length "])" , "g");
return String (string).replace(pattern, function(match,index) {
return args[index];
}); 🎜>
format 関数を通じて、次のコード:


コードをコピー コードは次のとおりです: format("そして %1 はあなたが %2 であることを知りたいと思っています", "papers", "shirt", "wear");

は次のように返します: "そして新聞社はあなたが誰のシャツを着ているかを知りたがっているのです。」
案の定、これは C# でパラメータを渡して string.format 関数を呼び出すのと少し似ています。
一般的に言って、技術的な内容は実際にはないようです。しかし、本当に技術的な内容はないのでしょうか? Lou Zhu は、JavaScript と引数に関する表面的な知識と理解に基づいてこのプログラムを分析します。
1. 正規表現
は、1 から 1 までの引数の数に一致する % で始まる新しいものを非常に巧妙に作成します。パターン、この規則的なパターンは、以下のポイント 2 の文字列置換の重要な前提条件です。
2. 文字列
の置換関数。置換関数の 2 番目のパラメータは、非常に「驚くべきこと」です。定義上、変数 args は実際には引数であり、args[index] を通じてインデックス パラメーターを取得できます。また、index>=1 および Index
この関数は非常に短く簡潔で、強力な関数と大きなコントラストを形成しており、驚くべきことです。
Lou Zhu のように C# に甘やかされて、C# での string.format の記述方法に執着する開発者はたくさんいるかもしれません (そのほとんどは使用習慣によって引き起こされますね)。ソースコードを少し変更しました:



コードをコピー コードは次のとおりです: 関数形式( string) {
var args = argument;
var pattern = new RegExp("{([0-" argument.length "])}", "g");
return String(string). replace(pattern, function(match,index) {
var currentIndex = parseInt(index);
if (currentIndex 1 > args.length || currentIndex throw new Error("パラメータ インデックス エラー");
}
return args[currentIndex 1];
});
};
document.write(format("そして、{0} は誰のものかを知りたいのです{1} you {2}", "papers ", "shirt", "wear"));//中括弧、インデックスは 0 から始まります...


このようにすると、 format 関数は C# の書き方と同じように呼び出すことができます。
私がこの記事の執筆を最後にチェックしたのは 2008 年でした。2008 年、Lou Zhu はかなり啓発されていました。彼は JavaScript の学習に熱心に取り組んでいましたが、議論の理解はまだ非常に未熟でした。イベントを定義するときに createFunction 関数を定義するために使用され、createFunction 関数はイベントで使用するパラメーターのない関数を構築するために使用されますが、当時は「自分にしかわからない」といつも落ち込んでいました。その形はあっても、現実ではありません。」アンドリューの傑作を読んだ後、私は突然啓発されたように感じました。私の反応は遅く、後で気づきましたが、それでも非常にインスピレーションと満足感を感じました。


Andrew Tetlaw の原文をお読みください。実際、以下の誰かが、format 関数のパラメータが 9 を超えると関数が機能しなくなることを指摘し、解決策も示しています:

eric d. こんにちは、素晴らしい記事をありがとう。 注: new RegExp("%([1-" argument.length "])", "g"); は 9 つの引数を渡すと失敗します (正規表現は "%([ 1 -10])" なので、%0 と %1) のみに一致します。

簡単な修正は次のようなものになると思います:
function format(string) { var args = argument; var pattern = new RegExp("%([0-9] )", "g"); return String(string).replace(pattern, function(match,index) { if (index == 0 || Index >= args) . length) throw "無効なインデックスがフォーマット文字列です"; return args[index] });持っています)

投稿日: 2009 年 1 月 20 日、午前 12:01

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Java の String.valueOf() 関数を使用して基本データ型を文字列に変換する Java の String.valueOf() 関数を使用して基本データ型を文字列に変換する Jul 24, 2023 pm 07:55 PM

Java の String.valueOf() 関数を使用して基本データ型を文字列に変換する Java 開発で基本データ型を文字列に変換する必要がある場合、一般的な方法は String クラスの valueOf() 関数を使用することです。この関数は、基本データ型のパラメータを受け入れ、対応する文字列表現を返すことができます。この記事では、基本的なデータ型変換に String.valueOf() 関数を使用する方法を検討し、いくつかのコード例を提供します。

char配列を文字列に変換する方法 char配列を文字列に変換する方法 Jun 09, 2023 am 10:04 AM

char配列をstringに変換する方法:代入によって実現できます {char a[]=" abc d\0efg ";string s=a;} 構文を使用して、char配列にstringに値を直接代入させて実行します変換を完了するためのコード。

Java の String.replace() 関数を使用して、文字列内の文字 (文字列) を置換します。 Java の String.replace() 関数を使用して、文字列内の文字 (文字列) を置換します。 Jul 25, 2023 pm 05:16 PM

Java の String.replace() 関数を使用して文字列内の文字 (文字列) を置換する Java では、文字列は不変オブジェクトです。つまり、文字列オブジェクトが作成されると、その値は変更できません。ただし、文字列内の特定の文字または文字列を置換する必要がある状況が発生する場合があります。現時点では、Java の String クラスの replace() メソッドを使用して文字列置換を実装できます。 String クラスの replace() メソッドには 2 つのタイプがあります。

2wワード詳細説明文字列、yyds 2wワード詳細説明文字列、yyds Aug 24, 2023 pm 03:56 PM

皆さんこんにちは。今日は Java の基本知識である String についてお話します。 String クラスの重要性は言うまでもなく、バックエンド開発で最もよく使用されるクラスであるため、説明する必要があります。

Golang関数のバイト、ルーン、文字列型変換スキル Golang関数のバイト、ルーン、文字列型変換スキル May 17, 2023 am 08:21 AM

Golang プログラミングでは、バイト、ルーン、文字列型は非常に基本的で一般的なデータ型です。これらは、文字列やファイル ストリームなどのデータ操作の処理において重要な役割を果たします。これらのデータ操作を実行するときは、通常、データを相互に変換する必要があるため、変換スキルを習得する必要があります。この記事では、読者がこれらのデータ型をより深く理解し、プログラミングの実践に上手に適用できるようにすることを目的として、Golang 関数のバイト、ルーン、および文字列の型変換テクニックを紹介します。

JavaのString.length()関数を使用して文字列の長さを取得します。 JavaのString.length()関数を使用して文字列の長さを取得します。 Jul 25, 2023 am 09:09 AM

文字列の長さを取得するには、Java の String.length() 関数を使用します。Java プログラミングでは、文字列は非常に一般的なデータ型です。多くの場合、文字列の長さ、つまり文字列内の文字数を取得する必要があります。 Java では、String クラスの length() 関数を使用して文字列の長さを取得できます。簡単なコード例を次に示します。 publicclassStringLengthExample{publ

JavaのStringクラスの使い方 JavaのStringクラスの使い方 Apr 19, 2023 pm 01:19 PM

1. JDK の String1. String を理解する まず、JDK の String クラスのソース コードを見てみましょう. これには多くのインターフェイスが実装されています. String クラスは Final によって変更されていることがわかります. これは、String クラスができないことを意味しますString. クラスのサブクラスは継承されず、String. クラスのサブクラスは存在しないため、JDK を使用するすべての人が同じ String クラスを使用します。String の継承が許可されている場合、誰もが String を拡張できます。全員が異なるバージョンの String を使用し、2 人の異なる人が String. クラスを使用します。同じメソッドでも異なる結果が表示されるため、コードの開発が不可能になります。継承とメソッドのオーバーライドは柔軟性をもたらすだけでなく、多くのサブクラスの動作が異なる原因になります。

Java String での Split メソッドの使用方法 Java String での Split メソッドの使用方法 May 02, 2023 am 09:37 AM

String の Split メソッドは、String の Split() メソッドを使用して、受信する文字または文字列に従って String を分割し、分割された配列を返します。 1. 一般的な使用法 @ や区切り文字などの一般的な文字を使用する場合: Stringaddress="Shanghai@Shanghai City@Minhang District@Wuzhong Road";String[]splitAddr=address.split("@");System .out。 println(splitAddr[0]+splitAddr[1]+splitAddr[2]+splitAddr[3]

See all articles