Closed2
sprintfの引数を使いまわして文字列を生成する
C# の string.Format() で {}
を使ったときのように、引数を使い回せたらいいなぁって思ってた。
string.Format("{0} {1} {0}", "A", "B"); // A B A
ドキュメントを読んでいたらどうやら可能らしい。
format
// 省略
変換の仕様は、以下のプロトタイプに従います: %[argnum$][flags][width][.precision]specifier.Argnum
何番目の引数を変換の対象にするかを指定するために、 数値の後にドル記号 $ を続けます。
sprintf('%1$s %2$s %1$s', 'A', 'B'); // A B A
完全に見落としてた。
普段使ってる関数だったとしても、ドキュメントに目を通すことは大事だな。
ちなみにこれ、$format
の文字列をダブルクォートで囲ってしまうと、$s
が変数として展開されてしまう。
\$s
とすれば動くが、可読性は下がる。
sprintf("%1\$s %2\$s %1\$s", 'A', 'B'); // A B A
このスクラップは2023/01/04にクローズされました