今回は指定値を書式付き文字列に変換することを行います。
書式とはフォーマット、決められた形式のことで、主に数値を指定書式に変換するのです。 例えば数値の桁数を統一したり、数値の前後に「\」や「%」等のある文字を付加したりするのに使います。 まぁ、数値の前後に特定の文字を付加することくらいなら今から説明する命令を使わずとも出来ますが。
1 2 3 |
var = "98" var += "%" mes var |
1 2 3 |
var = "98" var = "\" + var mes var |
1 |
mes "こんな風に\n改行することができるんですね。\n\n1回につき1つの改行となります。" |
このようにだけ書いておくと、 1つのテキスト内で改行させるにはこの方法しかないように誤解されてしまいますので このようにすることでも出来るというのを紹介しておきます。
1 2 3 4 5 6 |
mes {" エスケープシーケンスを使わずとも、 このような書き方にすることで、 スクリプト上で実際に改行した通り、 出力でも改行させられます。 "} |
1 |
mes "12345678901234567890\n1\t23\t45" |
1 |
mes "c:\\program files\\hspbc\\" // 「c:\program files\hspbc\」を表す |
1 2 |
mes "文字列内で「\"」を書く時はスクリプトに「\\\"」と書く。" mes "文字列内で「'」を書く時はスクリプトに「'」または「\\'」と書く。" |
| 書式付文字列 = strf(フォーマット, 対象値) | |||
| 書式付文字列 | 書式化された文字列。 | ||
| フォーマット | C言語のsprintf構文準拠の書式指定を行う。 | ||
| 対象値 | 変換対象の変数または定数。 | ||
1 2 3 |
mes strf("書式付「%d」", 12345) mes strf("\\%d", 98) mes strf("\\%d%%", 98) |
| 記述例 | 表示結果 |
| mes strf("[%4d]", 123) | [ 123] |
| mes strf("[%4d]", 12) | [ 12] |
| mes strf("[%4d]", 12345) | [12345] |
| mes strf("[%4d]", -12) | [ -12] |
| mes strf("[%5d]", "7") | [7] |
| 記述例 | 表示結果 |
| mes strf("[%04d]", 123) | [0123] |
| mes strf("[%04d]", 12) | [0012] |
| mes strf("[%04d]", 12345) | [12345] |
| mes strf("[%04d]", -12) | [-012] |
| 記述例 | 表示結果 |
| mes strf("[%3.8f]", 50.75) | [50.75000000] |
| mes strf("[%02.1f]", 9.99) | [10.0] |
| mes strf("[%9.0f]", 12345.6789) | [ 12346] |
| mes strf("[%08.02f",-12.3) | [-0012.30] |
| 記述例 | 表示結果 |
| mes strf("[%2x]", 14) | [ e] |
| mes strf("[%03X]", 90) | [05A] |
| mes strf("[%4x]", -111) | [ffffff91] |
| mes strf("[%05x]","6C") | [6C] |
| 記述例 | 表示結果 |
| mes strf("[%c]", 100) | [ e] |
| mes strf("[%2c]", 300) | [,] |
| mes strf("[%3c]", 0) | [ |
| 記述例 | 表示結果 |
| mes strf("[%o]", 4) | [4] |
| mes strf("[%o]", 8) | [10] |
| mes strf("[%4o]", 12) | [ 14] |
| mes strf("[%03o]", 16) | [020] |
1 2 3 4 5 |
mes %1100 // 2進数表記1 mes 0b1101 // 2進数表記2 mes $2D // 16進数表記1 mes 0x2E // 16進数表記2 mes strf("%x", $9ABCD) // 記述も表示も16進数にしてみる |
| 記述例 | 表示結果 |
| mes strf("[%#o]", 20) | [024] |
| mes strf("[%#d]", 20) | [20] |
| mes strf("[%#x]", 20) | [0x14] |
| mes strf("[%#X]", 20) | [0X14] |
| 記述例 | 表示結果 |
| mes strf("[%e]", 0.0000000003) | [3.000000e-010] |
| mes strf("[%E]", 10000.0) | [1.000000E+004] |
| mes strf("[%2e]", 999999.9) | [9.999999e+005] |
| mes strf("[%03E]", 0.00000005) | [5.000000E-008] |
| 記述例 | 表示結果 |
| mes strf("[%+o]", 30) | [36] |
| mes strf("[%+d]", 30) | [+30] |
| mes strf("[%+#d]", 30) | [+30] |
| mes strf("[%#+d]", 30) | [+30] |
| mes strf("[%+d]", -30) | [-30] |
| 記述例 | 表示結果 |
| mes strf("[%d]", 3000000000) | [-1294967296] |
| mes strf("[%u]", 3000000000) | [3000000000] |
| mes strf("[%u]", -1) | [4294967295] |
| mes strf("[%+u]", 1) | [1] |
| mes strf("[%u]", 4294967296) | [0] |
| 書式付文字列 = strf(フォーマット, 対象値…) | |||
| 書式付文字列 | 書式化された文字列。 | ||
| フォーマット | C言語のsprintf構文準拠の書式指定を行う。 | ||
| 対象値… | 変換対象の変数または定数。書式ワードの数だけ対象値を指定する。 | ||
1 2 3 4 |
mes strf("%5d", 123) mes strf("%5d", 45) mes strf("%5d", 678) mes strf("%5d", 90) |
1 |
mes strf("%5d\n%5d\n%5d\n%5d",123, 45, 678, 90) |