0

假设我String.Format("{0} {1} at {2} for {3}-{4} ... and finally {7}", var1, var2, ...)现在必须在 String.Format 的开头添加一个额外的变量,并且出于维护和可读性的原因,我想避免String.Format("{8} {0} {1} at {2} ...", ...)

基本上我想避免我最终得到看起来像String.Format("{5} {3} {0} {7} {1} {4} {2}", var1, var2, .... 在 6 次更改请求之后你可能会得到一些东西,你必须非常仔细地查看每个变量将被替换的位置。

有什么东西可以自动为我重新订购替换件吗?

4

5 回答 5

1

这种构造将允许您链接任意数量的变量(它相当通用,对于您的特定示例,它需要一些调整):

string var1 = "a", var2 = "b";
string result = string.Empty;

foreach(var a in new object[] {var1, var2 /*, var3, varN */})
{
    result = string.Format("{1} {0}", a, result);
}

无论如何,我只是string.Format以您想要避免的方式使用以最少的努力获得结果。

于 2012-10-03T11:54:58.840 回答
0

尝试这个:

var firstString = string.Format("{0} {1} at {2} for {3}-{4} ... and finally {7}",var1, var2, ...);
var result = yourNewString + firstString;
于 2012-10-03T11:47:01.060 回答
0

你可以这样做:

var var1 = String.Empty;
String.Format("{0} {1} {2} at {3} ...", var1, var2, ...);

然后,如果您需要在开始时添加一些内容,您只需设置var1值。

于 2012-10-03T11:47:02.387 回答
0

使用以下...

var Result=variable+String.Format("{0} {1} at {2} for {3}-{4} ... and finally {7}",var1, var2, ...)  
于 2012-10-03T11:43:48.860 回答
0

由于似乎没有任何东西可以保持string.Format整洁(即维护者更容易):

完全避免此问题的另一种方法是使用命名字符串格式。例子:"{parent} yelled at {child}".FormatWith(new { parent = "I", child = "Mark" })

示例实现(由 Phil Haack 编写)

此外,使用 Roslyn,我们可能会在某个时候获得String Interpolation,它可以解决这个问题,而无需“自定义书面构造”。

于 2015-02-11T15:53:32.240 回答