我如何内插string?

我想在C#中执行以下操作(来自Python背景):

strVar = "stack" mystr = "This is %soverflow" % (strVar) 

如何将string内部的标记replace为外部的值?

 string mystr = string.Format("This is {0}overflow", strVar); 

你也可以使用命名参数而不是索引。

这已添加为C#6.0(Visual Studio 2015 +)。

例:

 var planetName = "Bob"; var myName = "Ford"; var formattedStr = $"Hello planet {planetName}, my name is {myName}!"; // formattedStr should be "Hello planet Bob, my name is Ford!" 

这是句法糖:

 var formattedStr = String.Format("Hello planet {0}, my name is {1}!", planetName, myName); 

其他资源:

C#(v2)讨论的string插值

C#6.0语言预览

您可以使用string.Format将值放入string中:

 private static readonly string formatString = "This is {0}overflow"; ... var strVar = "stack"; var myStr = string.Format(formatString, "stack"); 

另一种方法是使用C#连接运算符:

 var strVar = "stack"; var myStr = "This is " + strVar + "overflow"; 

如果你正在做很多连接,使用更有效的StringBuilder类:

 var strVar = "stack"; var stringBuilder = new StringBuilder("This is "); for (;;) { stringBuilder.Append(strVar); // spot the deliberate mistake ;-) } stringBuilder.Append("overflow"); var myStr = stringBuilder.ToString(); 

这没有运营商。 你需要使用string.Format

 string strVar = "stack"; string mystr = string.Format("This is {0}soverflow", strVar); 

不幸的是, string.Format是一个静态方法,所以你不能简单地写"This is {0}soverflow".Format(strVar) 。 有些人已经定义了一个扩展方法,它允许这个语法。

使用string.Format

 string mystr = string.Format("This is {0}overflow", "stack"); 

如果您目前使用C#6.0使用Visual Studio 2015,请尝试以下操作:

 var strVar = "stack"; string str = $"This is {strVar} OverFlow"; 

该function被称为string插值。

你应该使用String.Format() 。 语法有点不同,使用数字占位符代替。

例:

 String.Format("item {0}, item {1}", "one", "two") 

查看http://msdn.microsoft.com/en-us/library/system.string.format.aspx以获取更多详细信息。;

你有2个选项。 您可以使用String.Format,也可以使用连接运算符。

 String newString = String.Format("I inserted this string {0} into this one", oldstring); 

要么

 String newString = "I inserted this string " + oldstring + " into this one"; 

使用:

 strVar = "stack" mystr = String.Format("This is {0}", strVar); 

还有一种方法可以用string来实现占位符,在某些情况下,奇怪的帮助:

 mystr = mystr.Replace("%soverflow", strVar); 

你可以用Expansive完成这个工作: https : //github.com/anderly/Expansive