it-swarm.com.de

Wie interpoliere ich Strings?

Ich möchte Folgendes in C # tun (aus einem Python-Hintergrund):

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

Wie ersetze ich das Token in der Zeichenfolge durch den Wert außerhalb davon?

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

Sie können auch benannte Parameter anstelle von Indizes verwenden.

83
Darin Dimitrov

Dies wurde ab C # 6.0 (Visual Studio 2015+) hinzugefügt.

Beispiel:

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!"

Dies ist syntaktischer Zucker für:

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

Zusätzliche Ressourcen:

String Interpolation für C # (v2) Diskussion

C # 6.0 Sprachvorschau

263
Ashtonian

Sie können string.Format verwenden, um Werte in Strings zu löschen:

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

Eine Alternative ist die Verwendung des C # -Verkettungsoperators:

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

Wenn Sie viele Verkettungen durchführen, verwenden Sie die StringBuilder-Klasse, die effizienter ist:

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

Wenn Sie derzeit Visual Studio 2015 mit C # 6.0 verwenden, versuchen Sie Folgendes:

var strVar = "stack";

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

dieses Feature wird als String-Interpolation bezeichnet.

10
Sakal

Dafür gibt es keinen Operator. Sie müssen string.Format verwenden.

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

Leider ist string.Format eine statische Methode, so dass Sie "This is {0}soverflow".Format(strVar) nicht einfach schreiben können. Einige Leute haben eine Erweiterungsmethode definiert, die diese Syntax zulässt.

5
CodesInChaos

Verwenden Sie string.Format:

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

Sie sollten String.Format() verwenden. Die Syntax ist etwas anders, stattdessen werden numerische Platzhalter verwendet.

Beispiel:

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

Weitere Informationen finden Sie unter http://msdn.Microsoft.com/en-us/library/system.string.format.aspx .

4
Bruno Silva

Sie haben 2 Möglichkeiten. Sie können entweder String.Format oder den Verkettungsoperator verwenden. 

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

OR

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

Es gibt eine weitere Möglichkeit, Platzhalter mit string zu implementieren. Ersetzen hilft in bestimmten Situationen seltsam:

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

Sie können dies mit Expansive erreichen: https://github.com/anderly/Expansive

0
anderly

Sie können die folgende Methode verwenden

String-Interpolation

Das Sonderzeichen $ kennzeichnet ein Zeichenfolgenliteral als interpolierte Zeichenfolge. z.B.

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

Eine interpolierte Zeichenfolge ist ein Zeichenfolgenliteral, das möglicherweise interpolierte Ausdrücke enthält. Wenn eine interpolierte Zeichenfolge in eine Ergebniszeichenfolge aufgelöst wird, werden Elemente mit interpolierten Ausdrücken durch die Zeichenfolgendarstellungen der Ausdrucksergebnisse ersetzt.

String.Format

Verwenden Sie String.Format, wenn Sie den Wert eines Objekts, einer Variablen oder eines Ausdrucks in einen anderen String einfügen müssen.

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

Benutzen:

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