String.Format

C#で書く人は非常によく知っており、JavaScriptには非常に欠けているString.Formatメカニズムをよく使用します。 そのシンプルさと便利さにもかかわらず、ウェブ上で掘り下げることはほとんどなく、主にsprintfのテーマのバリエーション(ユーザーにとってはこんにちは)です。 JavaScriptで文字列のフォーマットを許可するスクリプトはかなり前に作成され、String.Format C#に似ていました。 フォーマットは同僚によってスクリプトで非常に厳密に使用されるようになりました。私はJavaScriptでString.Formatを取得したい人のために、コードを少しコームして公開することにしました。

したがって、主な機能:



使用する


次の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はこの関数に転送されます。パラメーターの数と規則は関数自体に依存しますが、いくつかの一般的なものがありますルール:
  1. パラメーターはコンマで区切られます。
  2. 括弧内のすべての文字は重要です。 {0:f(p1,p2)} 、送信されます['p1'、 'p2']。 {0:f(p1, p2)} 、送信されます['p1'、 'p2']
  3. コンマと閉じ括弧をマスクするには、スラッシュを使用します。 {0:f(p1\, p2)}が送信されます['p1、p2']
  4. パラメーターをスキップできます: {0:f(,p2)}が渡される[''、 'p2']
  5. ネストされたトークンを使用できます。 {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-置換文字列のフォーマット、可能な置換:

スクリプトをダウンロードするためのより完全なドキュメント

実際には、すべてがここにあります。 組み込み形式の完全な説明、テストスクリプト、ソースコード、パッケージバージョン

作業用スクリプトは追加のライブラリを必要とせず、3つの部分に分かれています。
  1. 実際にメインのフォーマットコードの実装
  2. 数値の書式設定
  3. 日付/時刻のフォーマット

スクリプトを減らすために、そこから2番目と3番目の部分を削除できます。
ソースには、その仕組みを理解するのに十分なコメントがあります。
すべてのコードはDmSyntaxを使用して色付けされています

Source: https://habr.com/ru/post/J83185/


All Articles