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)
其他资源:
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)
没有运营商.你需要使用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).有些人定义了一种扩展方法,允许这种语法.
用途string.Format:
string mystr = string.Format("This is {0}overflow", "stack");
Run Code Online (Sandbox Code Playgroud)