代码之家  ›  专栏  ›  技术社区  ›  Michael Kang

如何在插值字符串中使用变量?[复制品]

  •  0
  • Michael Kang  · 技术社区  · 6 年前

    这个问题已经有了答案:

    我试图在一个内插字符串中使用一个变量,但运气不好。我该怎么做?

    var name = "mike";
    var desc = "hello world {name}";
    var t = $"{ desc }";
    Console.WriteLine(t); // PRINTS: hello world {name}
    

    这就是我想要达到的目标:

    Console.WriteLine(t); // PRINTS: hello world mike
    

    这有可能吗?

    例如,假设我有一个方法:

    public string FormatString(string s) {
          var Now = DateTime.Now;
          return $s;
    }
    

    用法:

    Console.WriteLine(FormatString("The time is {Now}"));
    
    1 回复  |  直到 6 年前
        1
  •  3
  •   TheGeneral    6 年前

    你错过了一个 $

    var name = "mike";
    var desc = $"hello world {name}"; // this needs be interpolated as well
    var t = $"{desc}";
    Console.WriteLine(t); // PRINTS: hello world mike
    

    其他资源

    $ - string interpolation (C# Reference)

    $special字符将字符串文本标识为内插字符 一串 .内插字符串是可能包含 插值表达式。当内插字符串解析为 结果字符串,带有内插表达式的项替换为 表达式结果的字符串表示形式。这个特点是 提供C 6和更高版本的语言。


    更新

    但是假设我想要一个变量来存储带有name_的字符串 在里面。如果它在变量中,是否没有办法实现插值?

    不,你必须使用标准 String.Format 令牌

    var tokenString = "Something {0}";
    
    String.Format(tokenString,someVariable); 
    

    String.Format Method

    根据格式将对象的值转换为字符串 指定并将它们插入另一个字符串。

    如果需要插入对象的值,请使用string.format, 变量或表达式转换为另一个字符串。例如,您可以 将十进制值的值插入字符串以将其显示到 作为单个字符串的用户:

    Composite Formatting

    .NET复合格式功能获取对象列表和 作为输入的复合格式字符串。复合格式字符串由 与索引占位符混合的固定文本,称为格式 与列表中的对象相对应的项。格式化 操作生成一个结果字符串,该字符串由原始固定文本和列表中对象的字符串表示混合组成。