在writefln()外部连接D串的最短方法?

时间:2013-01-02 11:39:01

标签: d phobos

我重申需要连接格式字符串,并想知道在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("-");

...这非常方便,但只有当你使用相同的“分隔符”时才有效。

更常见的方法是,这比上面的示例短,并且不需要提供预定义长度的缓冲区字符串?

1 个答案:

答案 0 :(得分:14)

您似乎将formatsformat混淆了。 format完全符合您的要求:

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

更好的是:在编译时而不是运行时捕捉格式字符串和参数之间的潜在不匹配:

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

连接字符串的最基本方法是使用~

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

更多相关内容:http://dlang.org/arrays.html#array-concatenation