说我现在有一个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个变更请求之后你可以得到的东西,你需要仔细查看每个变量将被替换的东西。
那里有什么可以重新排序我的替换自动?
答案 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,这将解决此问题而无需“自定义书面构造”。