7

我反复需要连接格式字符串,并且想知道在 D 中连接 writefln() 函数之外的字符串的最短(或最容易阅读)方法是什么?

也就是说,我喜欢 writefln 的行为,例如:

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

...但我想这样做而不把它写在标准输出上。有没有同样简单的方法?

我发现的唯一想法是 std.string 中的格式函数,但这需要您提供预定义长度的字符串缓冲区作为第一个参数,这在大多数情况下很不方便。

我发现的另一种选择是(通过在 std.array 中使用“join”):

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

...这很方便,但当然只有在您使用相同的“分隔符”时才有效。

任何更通用的方法来做到这一点,比上面的例子更短,并且不需要提供预定义长度的缓冲区字符串?

4

1 回答 1

17

您似乎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

于 2013-01-02T12:33:25.907 回答