【问题标题】:C# Format StringC# 格式化字符串
【发布时间】:2020-04-30 03:30:25
【问题描述】:

C# 可以格式化字符串,例如$"string {a} {b} {c}" 将变量 a、b 和 c 替换到字符串中。

    var a = "string1";
    var b = "string2";
    var c = "string3";
    var d = $"string {a} {b} {c}";    // become "string string1 string2 string3"

可以将格式字符串存储到变量中,以便我可以动态创建字符串模板。

    var a = "string1";
    var b = "string2";
    var c = "string3";
    var template = "string {a} {b} {c}";

    var d = $template;  // Can I do this?

谢谢!

【问题讨论】:

标签: c#


【解决方案1】:

你应该使用string.Format:

var a = "string1";
var b = "string2";
var c = "string3";

var template = "string {0} {1} {2}";

var d = string.Format(template, a, b, c);

【讨论】:

    【解决方案2】:

    是的,您很可能正在使用一个字符串并对其进行格式化以填充变量,就像使用任何语言一样。

    在 C# 中可以这样做

    var a = "string1"; // first string
    var b = "string2"; // second string
    var c = "string3"; // third string
    var d = "string {0} {1} {2}"; // string to format (fill with variables)
    
    // formatting the string 
    var template = string.Format(d, a, b, c);
    
    // output -> "string string1 string2 string3"
    

    【讨论】:

      【解决方案3】:

      您可以使用String.Format 来实现此功能。

      var a = "string1";
      var b = "string2";
      var c = "string3";
      var template = "string {0} {1} {2}";
      
      var d = String.Format(template, a,b,c);
      

      【讨论】:

        【解决方案4】:

        我认为string.Format 是一个不错的候选人,但您也可以使用花哨的FormattableStringFactory

        var a = "string1";
        var b = "string2";
        var c = "string3";
        var template = "string {0} {1} {2}"; //Please note, not {a}, but {0}
        
        var str = string.Format(template, a, b, c); // Preferred
        
        // From System.Runtime.CompilerServices
        var str2 = FormattableStringFactory.Create(template, new object[] { a, b, c });
        

        如果您想保留“{a}”(而不是“{0}”),那么string.Replace 可以为您提供帮助。

        var d = template
               .Replace('{a}', a);
               .Replace('{b}', b);
               .Replace('{c}', c);
        

        【讨论】:

          猜你喜欢
          • 2021-05-09
          • 2016-10-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-04-18
          • 1970-01-01
          • 1970-01-01
          • 2014-11-02
          相关资源
          最近更新 更多