7

私は繰り返しフォーマット文字列を連結する必要があり、Dでwritefln()関数の外部で文字列を連結するための最短(または最も読みやすい)方法は何でしょうか?

つまり、writeflnの動作が好きです。たとえば、次のように実行できます。

// Some code to init y="2013", m="01", d="02" ...
writefln("%s-%s-%s", y, m, d);

...しかし、stdoutに書き出さずにこれを実行したいと思います。同様に簡単な方法はありますか?

私が見つけた唯一の考えはstd.stringのformat関数でしたが、最初の引数として事前定義された長さの文字列バッファを提供する必要があり、ほとんどの場合不便です。

私が見つけた他の選択肢は、(std.arrayの "join"を使用して)行うことでした:

// Some code to init y="2013", m="01", d="02" ...
datestr = [y, m, d].join("-");

...これは非常に便利ですが、もちろん同じ「セパレータ」を使用する場合にのみ機能します。

これを行うためのより一般的な方法は、上記の例よりも短く、事前定義された長さのバッファ文字列を提供する必要はありませんか?

4

1 に答える 1

17

あなたはと混同formatしているようですsformatformatあなたが望むことを正確に行います:

datestr = format("%s-%s-%s", y, m, d);

さらに良い方法:実行時ではなくコンパイル時に、format-stringと引数の間の潜在的な不一致をキャッチするには:

datestr = format!"%s-%s-%s"(y, m, d);

文字列を連結する最も基本的な方法は、次の~とおりです。

datestr = y ~ "-" ~ m ~ "-" ~ d;

詳細:http ://dlang.org/arrays.html#array-concatenation

于 2013-01-02T12:33:25.907 に答える