Luastring.formatの使用法



Lua String Format Usage



転載: https://blog.csdn.net/hello_crayon/article/details/50667927

Luaでは、「..」を使用して文字列を接続できます。これは、文字列のフォーマットの一部を果たすことができますが、文字列が長い場合、または特別なフォーマット変換操作(16進変換など)がある場合は、「」を使用します。 。」面倒で読みにくくなります。 string.format()を使用することは良い解決策です。


関数定義string.format()最初のパラメーターは文字列フォーマットです。次のパラメーターは任意の数値にすることができ、最初のパラメーターのフォーマット制御文字を埋めるために使用され、最後に完全なフォーマット済み文字列を返します。




フォーマット制御文字 %から始まり、以下が一般的に使用されます

%S-文字列を受け入れ、指定されたパラメータに従って文字列をフォーマットします
%d-数値を受け入れ、符号付き整数形式に変換します
%f数値を受け入れ、浮動小数点数形式(10進数)に変換します。デフォルトでは、小数点以下6桁が予約されており、欠落している桁は0で埋められます。
%x-数値を受け入れ、それを小文字の16進形式に変換します
%X-数値を受け入れ、大文字の16進形式に変換します



str = string.format('string:%s integer:%d decimal:%f hexadecimal number:%X','qweqwe',1,0.13,348) print(str) —- Output result: String: qweqwe Integer: 1 Decimal: 0.130000 Hexadecimal number: 15C


%Xの特別な使用法
%08X中央の2番目の数値には何桁がフォーマットされていますか?最初の数字は、十分な桁がない場合の塗りつぶしの数を示し、通常は0で埋められます。

str = string.format('0x%08X',348) print(str) —-> 0x0000015C —-The 0x in front is just an ordinary string, which is optional, because we usually add 0x in front of the hexadecimal number to indicate that this is a hexadecimal number, so here is added 0x, no Other special meanings.


%xの特別な使用法は%Xと同じです

%fの特別な使用法
%0.3f%0.3fの小数点の右側の数字は、小数点の後に予約されている桁数を示し、小数点の前の数字は、桁数が不足している場合の充填数を示します。通常は、 0で埋められます。
小数点をフォーマットし、小数点以下2桁を保持します

print(string.format( '%0.2f'、34.2344))-> 34.23



より多くの使用法

%c-数値を受け入れ、ASCIIコードテーブルの対応する文字に変換します
%d、%i-数値を取り、それを符号付き整数形式に変換します
%o-数値を受け入れ、8進数形式に変換します
%u-数値を受け入れ、それを符号なし整数形式に変換します
%x-数値を受け入れ、小文字を使用して16進数形式に変換します
%X-数値を受け入れ、大文字を使用して16進数形式に変換します
%e-数値を受け入れて科学的記数法形式に変換し、小文字のeを使用​​します
%E-数値を受け入れて科学的記数法形式に変換し、大文字のEを使用します
%f-数値を受け入れ、浮動小数点形式に変換します
%g(%G)-数値を受け入れ、それを%e(%E、%Gに対応)と%fの短い方に変換します
%q-文字列を受け入れ、Luaコンパイラで安全に読み取れる形式に変換します
%s-文字列を受け入れ、指定されたパラメータに従って文字列をフォーマットします


形式をさらに絞り込むために、%記号の後にパラメーターを追加できます。パラメータは次の順序で読み取られます。

(1)記号:+記号は、次の数字のエスケープ文字によって正の数が正の記号を表示することを示します。デフォルトでは、負の数のみが符号を表示します。
(2)プレースホルダー:0。後で文字列の幅を指定するときに使用されます。塗りつぶされていない場合のデフォルトのプレースホルダーはスペースです。
(3)位置合わせマーク:文字列幅を指定した場合、デフォルトは右揃えで、-記号を左揃えに変更できます。
(4)幅の値
(5)小数点以下の桁数/文字列カット:f(%6.3fなどの浮動小数点エスケープ文字)が設定されている場合、幅の値の後に小数部nが追加されます。浮動小数点数の小数点はn桁のみに予約されます。 。その後にs(%5.3sなどの文字列エスケープ文字)が続く場合、文字列は最初のn桁のみを表示するように設定されます。

これらのパラメーターの後には、上記のエスケープコードタイプ(c、d、i、f、...)があります。

string.format('%%c: %c', 83) Output S string.format('%+d', 17.0) output +17 string.format('%05d', 17) Output 00017 string.format('%o', 17) Output 21 string.format('%u', 3.14) Output 3 string.format('%x', 13) Output d string.format('%X', 13) Output D string.format('%e', 1000) Output 1.000000e+03 string.format('%E', 1000) Output 1.000000E+03 string.format('%6.3f', 13) Output 13.000 string.format('%q', 'One Two') Output 'One' Two' string.format('%s', 'monkey') Output monkey string.format('%10s', 'monkey') output monkey string.format('%5.3s', 'monkey') output mon