如何在插值字符串中使用变量?

时间:2018-11-22 02:03:26

标签: c# .net-core roslyn

我正在尝试在插值字符串中使用变量,但运气不佳。我该怎么做?

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 个答案:

答案 0 :(得分:4)

您缺少$

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)

  

$特殊字符将字符串文字标识为插值   字符串。插值字符串是可能包含以下内容的字符串文字   插值表达式。当插值字符串解析为   结果字符串,带有插值表达式的项目将替换为   表达式结果的字符串表示形式。此功能是   在该语言的C#6和更高版本中可用。


更新

  

但假设我想使用一个变量来存储带有{name}的字符串   在里面。如果插值在变量中,没有办法实现插值吗?

不用,您不必使用标准的String.Format令牌

var tokenString = "Something {0}";

String.Format(tokenString,someVariable); 

String.Format Method

  

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

     

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

Composite Formatting

  

.NET复合格式设置功能采用对象列表和   复合格式字符串作为输入。复合格式字符串由   固定文本与索引占位符混合在一起,称为格式   项,与列表中的对象相对应。格式化   操作产生的结果字符串由原始固定文本与列表中对象的字符串表示混合而成。