2014-01-15 81 views
1

使用String.Format時,可​​以使用{0},{1},{2}等引用要放入字符串的變量,例如:String.Format使用字符串代替整數

string s = String.Format("{0} {1}", "Like", "this."); 

有什麼方法可以在花括號內使用字符串值而不是整數。因此,輸入字符串是:

"{word1} {word2}" 

我這樣做,因爲我有這需要在要填充的區域長的文本文件中有太多的領域,有變數的有序列表放置和變量可以重複。

那麼我怎樣才能使用類似於String.Format使用字符串名稱而不是使用索引?

+0

以及如何將編譯器知道哪些參數去哪裏? – wudzik

+0

[named String.Format可能有重複,有可能嗎? C#](http://stackoverflow.com/questions/1010123/named-string-format-is-it-possible-c-sharp)和http://stackoverflow.com/questions/159017/named-string-格式化-在-C-尖銳。請在發佈問題之前進行搜索。 –

+2

將有一個解決方法,但不是與String.Format。你必須用關鍵字清楚地複製字符串,然後用String.Replace()方法替換這些值。 – Nil23

回答

2

這不可能與String.Format。你可以這樣做:

string result = formatString.Replace("{word1}", replacement); 

假設你有佔位符作爲鍵和替換爲值的字典,你可以這樣做:

Dictionary<string, string> words = new Dictionary<string, string>(); 
words["{word1}"] = "Hello"; 
words["{word2}"] = "World!"; 

StringBuilder result = new StringBuilder("{word1} {word2}"); 
foreach (string key in words.Keys) 
    result.Replace(key, words[key]); 

string finalResult = result.ToString(); 

我使用StringBuilder這裏,以確保該字符串不會在每個Replace上被複制,如果我在這裏使用string就會出現這種情況。