2014-01-15 52 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就会出现这种情况。