Lua string.formatの使い方
2889 ワード
私たちはluaで「..」を使うことができることを知っています.文字列を接続すると、文字列のフォーマットの一部として機能しますが、文字列が長い場合や16進数変換などの特殊なフォーマット変換操作がある場合は「.」を使用します.煩雑で可読性が悪い.stringでformat()は良い解決策です.関数定義format()の最初のパラメータは文字列フォーマットであり、後のパラメータは任意に複数であり、最初のパラメータのフォーマット制御子を埋め込み、最後に完全なフォーマットされた文字列を返すことができる.
形式の制御子は%で始まり、よく使われるのは以下のいくつかです.
%s-文字列を受け入れ、指定されたパラメータに従って文字列 %dをフォーマットします.数値を受け入れ、記号付き整数フォーマット %fに変換します.数値を受け入れ、浮動小数点数フォーマット(小数)に変換します.デフォルトでは6桁の小数点数が保持されます.不足ビットは0で埋め込まれます.%x-1つの数字を受け入れ、小文字の16進数フォーマットに変換します.%X-1つの数字を受け入れ、大文字の16進数フォーマットに変換します.
%Xの特殊な使い方
%08 Xの中間の2番目の数字は何桁にフォーマットされ、1番目の数字は桁数未満の場合の充填数を表し、通常は0で充填されます.
%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,…)がある.
形式の制御子は%で始まり、よく使われるのは以下のいくつかです.
%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