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

pix*_*its 0 c# roslyn .net-core

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

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

这是我要实现的目标:

Console.WriteLine(t); // PRINTS: hello world mike
Run Code Online (Sandbox Code Playgroud)

这可能吗?

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

public string FormatString(string s) {
      var Now = DateTime.Now;
      return $s;
}
Run Code Online (Sandbox Code Playgroud)

用法:

Console.WriteLine(FormatString("The time is {Now}"));
Run Code Online (Sandbox Code Playgroud)

AAA*_*ddd 5

你想念一个 $

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

其他资源

$-字符串插值(C#参考)

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


更新资料

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

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

var tokenString = "Something {0}";

String.Format(tokenString,someVariable); 
Run Code Online (Sandbox Code Playgroud)

String.Format方法

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

如果需要将对象,变量或表达式的值插入另一个字符串,请使用String.Format。例如,您可以将十进制值插入字符串中,以单个字符串形式显示给用户:

复合格式

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