每个人都知道使用Format方法的典型方法是
string res = string.format("<Field Name='Title'>{0}</Field>", "SomeValue");
{0}
将变为SomeValue
对于每个后续参数,您只需增加数字,以便下一个参数可能如下所示
string res = string.format("<Field Name='Title'>{0}</Field><Field Name='FirstName'>{1}</Field>", "SomeValue", "SomeValue1");
我遇到的问题是,每当我对xml中的参数进行更改时,我都要尝试构建,我需要经历并重新排序格式字符串值,即:{1}
变为{{1} },{2}
变为{2}
等等。
我想知道的是,是否有某种方法我可以省略占位符中的整数值,格式函数可能能够根据传入的参数索引计算出订单?
答案 0 :(得分:1)
我不确定某个方法,但是你可以使用某种正则表达式,并根据命名字符串而不是索引替换它,但这并不是很漂亮。
另一种解决方案是以不同方式填充参数。例如,如果0点正在改变,那么只需在参数列表的开头添加新参数而不是仅将其添加到结尾,而不是重新编号。但是,这仍然需要重写代码。
最后,当您可以使用XMLDocuments和XMLWriters时,为什么要手动格式化XML?这将允许您以更加可控的方式输入这些值(可能没有看到周围的代码,我无法肯定地说)
答案 1 :(得分:1)
var fields = new Dictionary<string, string>
{
{"Title", "someTitle"},
{"FirstName", "Johnny"},
{"LastName", "Depp"}
};
var res = string.Join("", fields.Select(kvp => string.Format("<Field Name='{0}'>{1}</Field>",
kvp.Key,
kvp.Value)));
答案 2 :(得分:0)
使用Resharper等重构工具。它将在String.Format
为您重新格式化。没有固有的方法来做你所要求的。
Resharper将允许您在任意位置插入元素并重新排序索引。它也允许您删除。
答案 3 :(得分:0)
或者,您可以使用StringTemplate