7.文字列フォーマット
1.sprintf
引数をフォーマットした文字列を返します。
詳細は、ヘルプの [RGSS リファレンス] - [付録] - [sprintf フォーマット] に載っています。
sprintf 以外にも format や String#% で同じ処理が行えます。
詳細は、ヘルプの [RGSS リファレンス] - [付録] - [sprintf フォーマット] に載っています。
sprintf 以外にも format や String#% で同じ処理が行えます。
2.使用方法
sprintf(書式, 値),format(書式, 値),書式 % 値のように使用します。
書式は、%[フラグ][幅][.精度]指示子で、%と指示子は省略できません。
使い道が思いつかないものは省略させていただいています。
フラグ
+正数の場合に + を加えます。
" "(スペース)正数の場合に " "(スペース)を加えます。
0桁数が足りない場合に 0 で補います。
-出力を左詰めにします。「幅」の指定が必要です。
幅
文字列の幅を指定できます。
数字とアルファベット以外は、1文字で3つ幅を使用するので気をつけてください。
小数を扱ったときの小数点も1文字に数えます。
精度
.後に続く数字は精度を表わします。
引数が整数の場合は、数値の桁数 (指定された値より少ない場合は、0 で補う)
小数の場合は、小数部分の桁数
文字列の場合は、出力される文字数を表します。
指示子
d整数を表します。(数値でなかった場合は整数に変換されます。)
f小数を表します。(数値でなかった場合は小数に変換されます。)
s文字列を表します。(文字列でなかった場合は、文字列に変換されます。)
pデバッグ文字を表します。(デバッグに使う p と同じ内容の文字列に変換します。)
書式は、%[フラグ][幅][.精度]指示子で、%と指示子は省略できません。
使い道が思いつかないものは省略させていただいています。
フラグ
+正数の場合に + を加えます。
" "(スペース)正数の場合に " "(スペース)を加えます。
0桁数が足りない場合に 0 で補います。
-出力を左詰めにします。「幅」の指定が必要です。
p sprintf("%+d", 10) # => "+10" p sprintf("% d", 10) # => " 10" p sprintf("%03d", 10) # => "010" p sprintf("%-3d", 10) # => "10 "
幅
文字列の幅を指定できます。
数字とアルファベット以外は、1文字で3つ幅を使用するので気をつけてください。
小数を扱ったときの小数点も1文字に数えます。
p sprintf("%5d", -10) # => " -10" p sprintf("%+5d", 10) # => " +10" p sprintf("%05d", 10) # => "00010" p sprintf("% 5d", "あ") # => " あ"
精度
.後に続く数字は精度を表わします。
引数が整数の場合は、数値の桁数 (指定された値より少ない場合は、0 で補う)
小数の場合は、小数部分の桁数
文字列の場合は、出力される文字数を表します。
p sprintf("%.1d", 128) # => "128" p sprintf("%.1f", 3.14) # => "3.1" p sprintf("%-5.2s", "hoge") # => "ho "*引数で精度を指定します。
p sprintf("%.*d", 3, 64) # => "064" str = "あいうえお" p sprintf("%.*d", str.size, str) # => "あいうえお"
指示子
d整数を表します。(数値でなかった場合は整数に変換されます。)
f小数を表します。(数値でなかった場合は小数に変換されます。)
s文字列を表します。(文字列でなかった場合は、文字列に変換されます。)
pデバッグ文字を表します。(デバッグに使う p と同じ内容の文字列に変換します。)
fmt = "%d:%05.2f:%s:%p" p sprintf(fmt, 16, 0, [1,2,3], [1,2,3]) # => "16:00.00:123:[1, 2, 3]"
3.使用例
◆ 正と負の場所を揃える
左寄せの文字の場合、マイナス値があると数値の場所がズレて不恰好になってしまいます。
それを揃えるために使用します。
◆ ゼロを含む数値
◆ 小数点以下を含む数値
左寄せの文字の場合、マイナス値があると数値の場所がズレて不恰好になってしまいます。
それを揃えるために使用します。
p sprintf("%d", -12) # => "-12" p sprintf("%+d", 24) # => "+12" p sprintf("% d", 36) # => " 36"
◆ ゼロを含む数値
p sprintf("%03d", 12) # => "012" p sprintf("%05d", 256) # => "00256"
◆ 小数点以下を含む数値
p sprintf("%.3f", 4.35) # => "4.350" p sprintf("%05.1f", 0) # => "000.0" p sprintf("%.1f", 256) # => "256.0"
4.引数指定
複数の値をフォーマットすることもできます。
通常、引数の順に使用されます。
○には、いくつめの引数かを入れます。
通常、引数の順に使用されます。
p sprintf("%d:%d", 12, 0) # => "12:00"
引数順にしたくない場合や同じ引数を複数回使いたい場合は、○$と使用します。○には、いくつめの引数かを入れます。
p sprintf("%1$02d:%2$02d", 12, 0) # => "12:00"