【问题标题】:String.Format use a string instead of an integer [duplicate]String.Format 使用字符串而不是整数 [重复]
【发布时间】:2014-01-15 15:07:49
【问题描述】:

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

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

有什么方法可以在花括号内使用字符串值而不是整数。这样输入字符串将是:

"{word1} {word2}"

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

那么我怎样才能使用类似于 String.Format 的方法,使用字符串名称而不是使用索引呢?

【问题讨论】:

标签: c# string


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    String.Format 没有内置这种功能,你怎么能通过Custom Format strings 实现呢

    您也可以参考文章Fun With Named Formats, String Parsing, and Edge Cases

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-27
      • 2010-10-29
      • 1970-01-01
      • 1970-01-01
      • 2016-01-22
      • 2020-06-25
      • 1970-01-01
      相关资源
      最近更新 更多