C#で書く人は非常によく知っており、JavaScriptには非常に欠けているString.Formatメカニズムをよく使用します。 そのシンプルさと便利さにもかかわらず、ウェブ上で掘り下げることはほとんどなく、主にsprintfのテーマのバリエーション(ユーザーにとってはこんにちは)です。 JavaScriptで文字列のフォーマットを許可するスクリプトはかなり前に作成され、String.Format C#に似ていました。 フォーマットは同僚によってスクリプトで非常に厳密に使用されるようになりました。私はJavaScriptでString.Formatを取得したい人のために、コードを少しコームして公開することにしました。
したがって、主な機能:
- C#:
{0}
ようなマーカー - 使用するフォーマット関数を指定できます:
{0:d}
- 書式設定関数にパラメーターを渡すことができます:
{0:n(,2)}
- 書式設定関数を登録できます
- 小型-パック形式で3.5Kb
- 高速に動作します
- IE、Chrome、Firefox(検証済み)で動作しますが、理論的にはサーバーサイドJavaScriptでの動作を妨げるものはありません
- すでに実装され、組み込みのフォーマット関数:
- 配列のフォーマット
- 数値の書式設定
- 日付と時刻のフォーマット
使用する
次の2つの方法で使用できます。
1. C#の場合:
var s = String. Format (format, arg0 [ , arg1 [ , arg2 [ ... ] ] ] );
2.任意の行の関数として:
var s = 'format string {0}' . format (arg0 [ , arg1 [ , arg2 [ ... ] ] ] );
トークンのルール
{0}
-JavaScriptルールに従って値が文字列に変換されます
{0:f}
-値はfという名前で登録された関数を使用して文字列に変換されます
{0:f(p1,p2)}
-値はfという名前で登録された関数を使用して文字列に変換され、配列内のパラメーターp1およびp2はこの関数に転送されます。パラメーターの数と規則は関数自体に依存しますが、いくつかの一般的なものがありますルール:
- パラメーターはコンマで区切られます。
- 括弧内のすべての文字は重要です。
{0:f(p1,p2)}
、送信されます['p1'、 'p2']。 {0:f(p1, p2)}
、送信されます['p1'、 'p2'] - コンマと閉じ括弧をマスクするには、スラッシュを使用します。
{0:f(p1\, p2)}
が送信されます['p1、p2'] - パラメーターをスキップできます:
{0:f(,p2)}
が渡される[''、 'p2'] - ネストされたトークンを使用できます。
{0:f({1})}
['value_of_parameter_ with_index_1']が渡されます。この場合、フォーマットは許可されず、値はフォーマット関数に渡された値と同じように転送されます
書式設定関数
すべてのフォーマット関数は、2つのパラメーターを受け取ります。フォーマットされる値とパラメーターの配列です。 これは、フォーマット関数を登録することが推奨される方法です:
( function (format)<br/> { <br/> // <br/> // name - <br/> // v - , , format <br/> // params - , , <br/> // , <br/> format. add (name, function (v, params)<br/> { <br/> return ...;<br/> } );<br/> } )(String.prototype.format);
組み込みのフォーマット機能
このスクリプトには、すでに数値、配列、日付のフォーマット関数があります。
{0:n}
-数値をフォーマットします;数値が関数に来ていない場合、NaNが表示されます。 数値1.11111111e + 20の形式は、通常111111111000000000000に変換されます。「1.67」または「123.456e + 2」の行を転送できます。それぞれ1.67と12345.6が挿入されます。
{0:n([i][,f])}
-ゼロで埋められた数値を希望の桁数にフォーマットします。
i-整数部分の桁数。整数部分にさらに桁がある場合、それらは所定の位置に残ります。桁数が少ない場合、必要な数のゼロが先頭に挿入されます。
f-小数部の桁数。余分な数字は破棄されます。
パラメータはスキップできます:{0:n(、2)}-小数点以下2桁の数値を出力します。
{0:df([f])}
-任意の日付フォーマット、f-置換文字列のフォーマット、可能な置換:
- yyまたはyyyy-年。4文字が常に表示されます。
- MまたはMM-月、1または2桁
- dまたはdd-日、1桁または2桁
- HまたはHH-時計、24時間形式の1または2桁
- mまたはmm-分、1または2桁
- sまたはss-秒、1または2桁
- f ... ffff-ミリ秒、1〜4文字
スクリプトをダウンロードするためのより完全なドキュメント
実際には、すべてがここにあります。
組み込み形式の完全な説明、テストスクリプト、ソースコード、パッケージバージョン作業用スクリプトは追加のライブラリを必要とせず、3つの部分に分かれています。
- 実際にメインのフォーマットコードの実装
- 数値の書式設定
- 日付/時刻のフォーマット
スクリプトを減らすために、そこから2番目と3番目の部分を削除できます。
ソースには、その仕組みを理解するのに十分なコメントがあります。