string.format序列可以按任何顺序出现

时间:2013-07-04 11:01:14

标签: c# asp.net .net-2.0

我这里有一个字符串,

return  string.Format("/abcXYZ990099/abc.aspx?IDA={0}&Name={1}&Teacher={2}",
                ID, Name, Teacher);

现在因为需求已经改变,我需要从数据库中获取“abcXYZ990099”,是否可以做这样的事情,

return  string.Format("/{3}/abc.aspx?IDA={0}&Name={1}&Teacher={2}",
                    ID, Name, Teacher, NewPropertyValue);

3 个答案:

答案 0 :(得分:7)

是的,你可以这样做。但我会重新编制占位符的索引并重新排序参数以适应它们在返回的字符串中出现的顺序,例如。

return  string.Format("/{0}/abc.aspx?IDA={1}&Name={2}&Teacher={3}",
                    NewPropertyValue, ID, Name, Teacher);

答案 1 :(得分:1)

这是完全正常的,格式项可以在字符串中以任何顺序出现。

例如,当格式字符串存储为本地化资源时,格式项可能是特定于文化的顺序。例如,要显示全名,您可以使用:

String.Format(Resources.FullNameFormatString, firstName, middleName, lastName)

显示顺序可能取决于文化,例如:

en-US: "{0} {1} {2}"  // First Middle Last

fr-FR: "{2}, {0} {1}" // Last, First Middle

您甚至可能有一个不使用其中一种格式项的本地化版本(例如中间名):

"{2), {0}" // Last, First (middle name not used)

当然,在你的例子中,重新排序项目可能更有意义,正如其他人所说的那样。

答案 2 :(得分:0)

你可以做到。但是改变顺序,因为代码必须是可以理解的。

string.Format("/{0}/abc.aspx?IDA={1}&Name={2}&Teacher={3}",NewPropertyValue, ID, Name, Teacher);