使用相同的值填充多个printf格式占位符

3
使用.NET字符串格式化,您可以将相同的值多次插入格式化字符串中:
Console.Write("{0}{0}{0}", 1) //prints "111"

有没有一种用printf样式格式化的方法,只提供一次值就可以实现这个功能?
1个回答

2
不行。传递给函数的值是按顺序从堆栈中获取的。如果您想在字符串的不同部分多次出现相同的值,则必须按顺序多次提供它们。
可以这样理解:您有一个带有标记的字符串和一个要插入以替换这些标记的内容列表。由于列表必须按照出现的顺序排列,因此如果您想用相同的值替换两个标记,则该值必须出现两次。
现在,请记住,复制参数并不一定意味着复制实际数据。

我从未想过我会说出这句话。 - Daniel
我正在生成SQL并且经常连接到同一张表。我讨厌一遍又一遍地输入那个表名。希望printf能够帮助我解决这个问题。但是由于我必须为了减少输入而牺牲类型推断,所以我想我只能勉强接受类型推断了。 - Daniel
Python是元编程之王,我使用短小精悍(<10行)的Python程序来创建大部分样板代码。下次尝试一下,看看你是否喜欢它! - salezica
1
附言:我认为我们可能已经保留了以$开头的运算符或类似的东西,特别是在某个未来版本中,我们可能会添加诸如$“foo: $bar $qux $bar”这样的语法,其中$name将环境中的name值注入到$字符串文字中。 明确地说,我们短期内没有实际计划这样做,但我们明确保留了语言语法设计中的某种空白空间,以便将来可能做出这样的事情。 一般来说,“脚本化”通常很适合想要在字符串格式化中使用简写/美观的方式。 - Brian
@Brian - 字符串内插似乎非常适合于 F#。 - Daniel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接