String.Format重新格式化替换

时间:2012-10-03 11:40:59

标签: c# visual-studio-2010 visual-studio

说我现在有一个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, ...的String.Formats。在6个变更请求之后你可以得到的东西,你需要仔细查看每个变量将被替换的东西。

那里有什么可以重新排序我的替换自动

5 个答案:

答案 0 :(得分: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以最小的努力获得结果。

答案 1 :(得分:0)

使用以下...

var Result=variable+String.Format("{0} {1} at {2} for {3}-{4} ... and finally {7}",var1, var2, ...)  

答案 2 :(得分:0)

试试这个:

var firstString = string.Format("{0} {1} at {2} for {3}-{4} ... and finally {7}",var1, var2, ...);
var result = yourNewString + firstString;

答案 3 :(得分:0)

您可以这样做:

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

然后,如果您需要在开头添加内容,则只需设置var1值。

答案 4 :(得分:0)

因为似乎没有任何东西可以保持string.Format整洁(即维护人员更容易):

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

Example implementations(由Phil Haack撰写)

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