2013-07-04 71 views
1

我這裏有一個字符串,能的String.format序列以任意順序出現

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); 
+1

當您嘗試此操作時發生了什麼? – V4Vendetta

+3

當然,更有意義的是:'string.Format(「/ {0} /abc.aspx?IDA= {1}&Name = {2}&Teacher = {3}」.....'....因爲'0'出現在'3'之前?從邏輯上講,當你從左到右讀取它時。 – Arran

+1

@ V4Vendetta我記得在幾個月前嘗試過它,但它沒有奏效(我認爲**不確定**) ,因此,我問問題,如果它是正確的做法或不,改變你的顯示名稱爲「積極」可能會幫助你:) – Mathematics

回答

7

是的,你可以這樣做。但是,我會重新爲佔位符編制索引並重新排列參數以適應它們應該出現在返回字符串中的順序,例如

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

你可以做。但改變順序,因爲代碼必須是可以理解的。

string.Format("/{0}/abc.aspx?IDA={1}&Name={2}&Teacher={3}",NewPropertyValue, ID, Name, Teacher); 
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) 

當然,在你的榜樣,它可能更有意義進行重新排序,正如其他人說。