如何插入字符串?

问题描述 投票:104回答:12

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

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

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

c# string string-interpolation
12个回答
85
投票
string mystr = string.Format("This is {0}overflow", strVar);

而你也可以使用named parameters而不是索引。


1
投票

您可以使用以下方式

字符串插值

$ special字符将字符串文字标识为插值字符串。例如

string name = "Mark";
string surname = "D'souza";
WriteLine($"Name :{name} Surname :{surname}" );//Name :Mark Surname :D'souza  

插值字符串是可能包含插值表达式的字符串文字。将插值字符串解析为结果字符串时,带有插值表达式的项目将替换为表达式结果的字符串表示形式。

的String.Format

如果需要将对象,变量或表达式的值插入另一个字符串,请使用String.Format。

WriteLine(String.Format("Name: {0}, Surname : {1}", name, surname));

0
投票

使用:

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

0
投票

您可以使用Expansive:https://github.com/anderly/Expansive完成此任务


267
投票

这是在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);

其他资源:

String Interpolation for C# (v2) Discussion

C# 6.0 Language Preview


14
投票

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

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();

11
投票

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

var strVar = "stack";

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

该功能称为字符串插值。


6
投票

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

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

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


5
投票

使用string.Format

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

4
投票

你应该使用String.Format()。语法略有不同,而是使用数字占位符。

例:

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

有关更多详细信息,请查看http://msdn.microsoft.com/en-us/library/system.string.format.aspx


1
投票

你有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";

1
投票

还有一种方法可以用string.Replace实现占位符,在某些情况下有点奇怪:

mystr = mystr.Replace("%soverflow", strVar);
© www.soinside.com 2019 - 2024. All rights reserved.