如何插入字符串?

saz*_*azr 105 c# string string-interpolation

我想在C#中做以下事情(来自Python背景):

strVar = "stack"
mystr  = "This is %soverflow" % (strVar)
Run Code Online (Sandbox Code Playgroud)

如何用字符串外的值替换字符串中的标记?

Ash*_*ian 269

这是在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!"
Run Code Online (Sandbox Code Playgroud)

这是语法糖:

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

其他资源:

C#(v2)讨论的字符串插值

C#6.0语言预览


Dar*_*rov 85

string mystr = string.Format("This is {0}overflow", strVar);
Run Code Online (Sandbox Code Playgroud)

您还可以使用命名参数而不是索引.


Dav*_*rke 14

您可以使用string.Format将值拖放到字符串中:

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

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

var strVar = "stack";
var myStr = "This is " + strVar + "overflow";
Run Code Online (Sandbox Code Playgroud)

如果您正在进行大量连接,请使用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();
Run Code Online (Sandbox Code Playgroud)


小智 12

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

var strVar = "stack";

string str = $"This is {strVar} OverFlow";
Run Code Online (Sandbox Code Playgroud)

该功能称为字符串插值.


Syl*_*gue 12

C#6.0

string mystr = $"This is {strVar}overflow";
Run Code Online (Sandbox Code Playgroud)


Cod*_*aos 6

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

string strVar = "stack";
string mystr  = string.Format("This is {0}soverflow", strVar);
Run Code Online (Sandbox Code Playgroud)

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


Mat*_*ott 5

用途string.Format:

string mystr = string.Format("This is {0}overflow", "stack");
Run Code Online (Sandbox Code Playgroud)