如何插入字符串?

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

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

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

54771 次浏览

这里没有操作符。您需要使用 string.Format

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

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

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

还可以使用 命名参数代替索引。

使用 string.Format:

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

用途:

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

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

例如:

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

更多细节请看 http://msdn.microsoft.com/en-us/library/system.string.format.aspx

您有两个选项。您可以使用 String.Format,也可以使用连接操作符。

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

OR

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

可以使用 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();

您可以使用膨胀式 https://github.com/anderly/Expansive来完成这项工作

这是从 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 # & # 40; v2 & # 41; 的字符串插值讨论

C # 6.0语言预览

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

var strVar = "stack";


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

这个特征叫做字符串插值。

C # 6.0

string mystr = $"This is {strVar}overflow";

还有一种用字符串实现占位符的方法。在某些情况下,替换有奇怪的帮助:

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

您可以使用以下方法

字符串插值

$special 字符将字符串标识为内插的字符串。

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

内插字符串是可能包含内插表达式的字符串文本。当将内插字符串解析为结果字符串时,具有内插表达式的项将被表达式结果的字符串表示形式替换。

字符串,格式

如果需要将对象、变量或表达式的值插入到另一个 String.E.g 中,请使用 String.Format。

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

基本例子 :

        var name = "Vikas";
Console.WriteLine($"My name is {name}");

添加特殊字符 :

string name = "John";
Console.WriteLine($"Hello, \"are you {name}?\", but not the terminator movie one :-\{\{");
//output-Hello, "are you John?", but not the terminator movie one :-{

不仅仅是用 value 替换标记,在 C # 中使用字符串插值还可以做更多的事情

评估表达式

Console.WriteLine($"The greater one is: { Math.Max(10, 20) }");
//output - The greater one is: 20

方法调用

    static void Main(string[] args)
{
Console.WriteLine($"The 5*5  is {MultipleByItSelf(5)}");
}
  

static int MultipleByItSelf(int num)
{
return num * num;
}

资料来源: C # 中的字符串插值及实例

You can use the dollar sign and curl brackets.

Console.WriteLine($"Hello, {name}! Today is {date.DayOfWeek}, it's {date:HH:mm} now.");

See doc here.