我重申需要连接格式字符串,并想知道在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("-");
...这非常方便,但只有当你使用相同的“分隔符”时才有效。
更常见的方法是,这比上面的示例短,并且不需要提供预定义长度的缓冲区字符串?
答案 0 :(得分:14)
您似乎将format
与sformat
混淆了。 format
完全符合您的要求:
datestr = format("%s-%s-%s", y, m, d);
更好的是:在编译时而不是运行时捕捉格式字符串和参数之间的潜在不匹配:
datestr = format!"%s-%s-%s"(y, m, d);
连接字符串的最基本方法是使用~
:
datestr = y ~ "-" ~ m ~ "-" ~ d;