言語別Sprintfのまとめ
スポンサーリンク
研究で実験をしていると、ファイル名を連番で出力したいという時が良くあります。
連番をtest1, test2, ..test10
などとすると、ファイル名でソートすると、都合よくソートされないんですよね
(test1 test10 test2
の順になる)
ファイル名でソートした時にうまくソートできるように、連番は001,002...011..
のように、0で埋めてみます。
(0埋め、と検索されることが多いです)
せっかくなので、bash以外の他のプログラミング言語でも使えるように、sprintfの書き方をまとめてみました。 sprintfは、かなり汎用性が高いですので、覚えておくと便利です。
以下、i
は整数とします。
bash
filename=$(printf test%03d $i)
単純に0梅の連番を作るのは、実は以下で簡単にできます。
seq -w 0 100
C, C++
char filename[10]; sprintf(filename, "test%03d", i);
java
Strng filename = Strng.format("test%03d", i)
Scala
var filename = "test%03d".format(i)
perl
$name = sprintf("test%03d", $i);
php
$filename = sprintf("test%03d", $i);
配列用の、vsprintfもある。
python
filename = "test%03d" % i # 2つ目の構文はタプルを渡せる。 filename = "%s%03d" % ("test", i)
ruby
sprnf以外にもよりタイプ数の少ないpythonの文に似たメソッドが有る。
filename = sprintf("test%03d", i) # もしくは filename = "test%03d" % i # 2つ目の構文は配列を渡せる。 filename = "%s%03d" % ["test", i]
sprintf
をformat
にしても同じ。
javascrpt
デフォルトでは実装されていないので、ライブラリを使う。 alexe/sprintf.javascript
var filename = sprintf("test%03d", i);
0埋めだけなら以下で。
// 3桁にする var filename = "test" + ( "000" + i).substr(-3); var filename = "test" + ( "000" + i).slce(-3);
ただし、桁数が想定より多い数字はうまく表示できないなどの欠点がある。
R
filename <- sprintf("test%3d", i)
go
import "fmt" var filename = fmt.Sprintf("test%03d", i)
lua
filename = string.format("test%03d", i)