我认为这是一个常见问题,但我似乎无法在SO或Google上找到任何内容。
是否可以只格式化一个参数。例如,格式化string foo = "{0} is {1} when {2}";
以便它返回读取"{0} is cray when {2}"
?
意向:
我试图格式化字符串,同时覆盖一个方法,然后在它的基本方法
成功
得到它感谢this answer,所有答案都有帮助:)。
这个单元测试工作:
string foo = String.Format("{0} is {1} when {2}", "{0}", "cray", "{2}");
Assert.AreEqual("{0} is cray when {2}", foo);
string bar = string.Format(foo, "this", null, "it works");
Assert.AreEqual("this is cray when it works", bar);
答案 0 :(得分:6)
从表面上看你的问题,我想你可以做到以下几点:
string foo = String.Format("{0} is {1} when {2}", "{0}", "cray", "{2}");
即,只需将每个未评估的格式项替换为自身。
答案 1 :(得分:2)
不,这是不可能的。 String.Format
将尝试替换每个括号内的占位符。如果您没有提供正确数量的参数,则会引发异常。
我不确定你为什么要这样做,但是如果你想让输出看起来那样,你就必须escape the brackets:
var foo = String.Format("{{0}} is {0} when {{1}}", "cray");
// foo is "{0} is cray when {1}"
也许如果你tell us what exactly you're trying to do,我们将能够更好地为您提供帮助。