在writefln()之外连接D中字符串的最短方法?

在writefln()之外连接D中字符串的最短方法?,d,phobos,D,Phobos,我反复需要连接格式字符串,并且想知道在D中,在writefln()函数之外连接字符串的最短(或最容易阅读)方法是什么 也就是说,我喜欢writefln的行为,您可以执行以下操作: // Some code to init y="2013", m="01", d="02" ... writefln("%s-%s-%s", y, m, d); 。。。但是我不想把它写在标准输出上。有没有同样简单的方法 我发现的唯一一个想法是std.string中的函数,但这要求您提供预定义长度的字符串缓冲区作为第一

我反复需要连接格式字符串,并且想知道在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”)执行以下操作:

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


是否有比上述示例更短、且不需要提供预定义长度的缓冲区字符串的更通用方法?

您似乎将
格式
格式
混淆了<代码>格式正是您想要的:

datestr = format("%s-%s-%s", y, m, d);
更好的方法是:在编译时而不是运行时捕获格式字符串和参数之间的潜在不匹配:

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

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

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

更多信息:

啊,事实上,我不知怎么搞砸了。谢谢!
datestr = y ~ "-" ~ m ~ "-" ~ d;