Lua string.formatの使い方

2889 ワード

私たちはluaで「..」を使うことができることを知っています.文字列を接続すると、文字列のフォーマットの一部として機能しますが、文字列が長い場合や16進数変換などの特殊なフォーマット変換操作がある場合は「.」を使用します.煩雑で可読性が悪い.stringでformat()は良い解決策です.関数定義format()の最初のパラメータは文字列フォーマットであり、後のパラメータは任意に複数であり、最初のパラメータのフォーマット制御子を埋め込み、最後に完全なフォーマットされた文字列を返すことができる.

形式の制御子は%で始まり、よく使われるのは以下のいくつかです.
%s-文字列を受け入れ、指定されたパラメータに従って文字列
%dをフォーマットします.数値を受け入れ、記号付き整数フォーマット
%fに変換します.数値を受け入れ、浮動小数点数フォーマット(小数)に変換します.デフォルトでは6桁の小数点数が保持されます.不足ビットは0で埋め込まれます.%x-1つの数字を受け入れ、小文字の16進数フォーマットに変換します.%X-1つの数字を受け入れ、大文字の16進数フォーマットに変換します.
str = string.format("   :%s
:%d
:%f
:%X","qweqwe",1,0.13,348) print(str) —- : :qweqwe :1 :0.130000 :15C

%Xの特殊な使い方

%08 Xの中間の2番目の数字は何桁にフォーマットされ、1番目の数字は桁数未満の場合の充填数を表し、通常は0で充填されます.
str = string.format("0x%08X",348)
print(str)   —-> 0x0000015C
—-   0x         ,    ,                0x            ,        0x,        。


%xの特殊な使い方は%Xと同じです
%fの特殊用法
%0.3 fの小数点の右の数字は小数点の後ろに何桁残っているかを表し、小数点の前の数字は桁数が足りないときの充填数を表し、一般的に0で充填する.
小数をフォーマットし、2桁の小数print(string.format('%0.2 f',34.244)->34.23を保持します.
より多くの使用法%c-1つの数字を受け入れ、ASCIIコードテーブルの対応する文字
%dに変換します.%i-1つの数字を受け入れて符号付き整数フォーマット
%oに変換-1つの数字を受け入れて8進数フォーマット
%uに変換-1つの数字を受け入れて符号なし整数フォーマット
%x-1つの数字を受け入れて16進数フォーマットに変換し、小文字
%X-で1つの数字を受け入れて16進数フォーマットに変換します.大文字
%e-を使用して数値を受け入れ、科学的な記数法フォーマットに変換し、小文字e
%E-を使用して数値を受け入れ、科学的な記数法フォーマットに変換します.大文字E
%f-を使用して数値を受け入れ、浮動小数点数形式
%g(%G)に変換-数値を受け入れて%e(%E、対応%G)に変換及び%fのうちの比較的短い形式
%q-は、1つの文字列を受け入れる、安全にLuaコンパイラに読み込まれる形式
%s-に変換する、1つの文字列を受け入れ、所定のパラメータに従ってさらに細分化された形式にフォーマットし、%番号の後にパラメータを追加することができる.パラメータは、(1)記号:1つの+記号がその後の数字を表すエスケープ記号が正数を表示する順序で読み込む.デフォルトでは負の数の表示記号のみが表示されます.
(2)プレースホルダ:0で、文字列の幅を指定するときにプレースホルダを使用します.記入しない場合のデフォルトのプレースホルダはスペースです.
(3)整列ID:文字列の幅を指定する場合、デフォルトでは右揃え、増加-番号を左揃えに変更できます.
(4)幅数値(5)小数位数/文字列裁断:幅数値の後に増加する小数部n、後接f(浮動小数点数変換子、例えば%6.3 f)では、この浮動小数点数の小数はnビットのみを保持するように設定、後接s(文字列変換子、例えば%5.3 s)では、この文字列は前nビットのみを表示するように設定.これらのパラメータの後には、上述のようなエスケープ符号の種類(c,d,i,f,…)がある.
string.format("%%c: %c", 83)              S
string.format("%+d", 17.0)                +17
string.format("%05d", 17)                 00017
string.format("%o", 17)                   21
string.format("%u", 3.14)                 3
string.format("%x", 13)                   d
string.format("%X", 13)                   D
string.format("%e", 1000)                 1.000000e+03
string.format("%E", 1000)                 1.000000E+03
string.format("%6.3f", 13)                13.000
string.format("%q", "One
Two")          "One\                                           Two" string.format("%s", "monkey")            monkey string.format("%10s", "monkey")              monkey string.format("%5.3s", "monkey")           mon