私はこれには使用PaddedForm
しません。実際、それが何にでも役立つかどうかPaddedForm
はわかりません。代わりに、私は古き良きToString
、Characters
そしてPadLeft
、のように使用します:
toFixedWidth[n_Integer, width_Integer] :=
StringJoin[PadLeft[Characters[ToString[n]], width, "0"]]
次に、とを使用StringForm
しToString
てファイル名を作成できます。
toNumberedFileName[n_Integer] :=
ToString@StringForm["filename_``", toFixedWidth[n, 5]]
Mathematicaはこの種の文字列の変更にはあまり適していません。
追加するための編集: Mathematica本体には必要な機能がありませんが、クラスには-style引数を取るjava.lang.String
静的メソッドがあります。MathematicaのJLink機能を使って簡単に呼び出すことができます。パフォーマンスはあまり良くありませんが、多くのユースケースではそれほど気にしないでしょう:format()
printf
Needs["JLink`"];
LoadJavaClass["java.lang.String"];
LoadJavaClass["java.util.Locale"];
sprintf[fmt_, args___] :=
String`format[Locale`ENGLISH,fmt,
MakeJavaObject /@
Replace[{args},
{x_?NumericQ :> N@x,
x : (_Real | _Integer | True |
False | _String | _?JavaObjectQ) :> x,
x_ :> MakeJavaExpr[x]},
{1}]]
JLinkは、可変数の引数を持つJava関数について少し馬鹿げているため、もう少し作業を行う必要があります。このformat()
メソッドはフォーマット文字列とJavaObject
の配列を取り、Mathematicaは自動的に変換を行いません。これMakeJavaObject
が目的です。