String.Format 使用字符串而不是整数



使用 String.Format 时,您可以使用 {0}、{1}、{2} 等来引用要放置在字符串中的变量,例如:

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

有什么方法可以在大括号内使用字符串值而不是整数。因此,输入字符串将是:

"{word1} {word2}"

我这样做是因为我有一个很长的文本文件,其中包含需要填写的区域。有太多的区域无法放置一个有序的变量列表,变量可以重复。

那么我如何使用类似于 String.Format 的方法使用字符串名称而不是使用索引呢?

这在 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,情况就是如此。

String.Format 没有这种功能内置,你怎么能通过自定义格式字符串来实现这一点

或者,您可以参考文章命名格式、字符串解析和边缘情况的乐趣

最新更新