Antworten:
string mystr = string.Format("This is {0}overflow", strVar);
Sie können auch benannte Parameter anstelle von Indizes verwenden.
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:
$("This feature is {GetDescription(FEATURE_AMAZING))}");
Sie können verwenden string.Format
, um Werte in Zeichenfolgen abzulegen:
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();
C # 6.0
string mystr = $"This is {strVar}overflow";
Dafür gibt es keinen Operator. Sie müssen verwenden string.Format
.
string strVar = "stack";
string mystr = string.Format("This is {0}soverflow", strVar);
Leider string.Format
ist eine statische Methode, so dass Sie nicht einfach schreiben können "This is {0}soverflow".Format(strVar)
. Einige Leute haben eine Erweiterungsmethode definiert, die diese Syntax erlaubt.
Verwendung string.Format
:
string mystr = string.Format("This is {0}overflow", "stack");
Sie sollten verwenden String.Format()
. Die Syntax ist etwas anders, stattdessen werden numerische Platzhalter verwendet.
Beispiel:
String.Format("item {0}, item {1}", "one", "two")
Werfen Sie einen Blick auf http://msdn.microsoft.com/en-us/library/system.string.format.aspx für weitere Details.
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);
ODER
String newString = "I inserted this string " + oldstring + " into this one";
String.Format()
verwendet StringBuilder. StringBuilder ist normalerweise effizienter, wenn viele Zeichenfolgen verkettet werden, aber der Verkettungsoperator eignet sich perfekt für einmalige Zeichenfolgen. String.Format()
ist nützlich, wenn die Ausgabe formatiert werden muss, z. B. um numerischen Werten Auffüllungen oder führende Nullen hinzuzufügen. Die Verwendung String.Format()
in einer Schleife instanziiert möglicherweise viele StringBuilder. In dieser Situation ist es besser, einen einzelnen StringBuilder zu verwenden, der außerhalb der Schleife und AppendFormat()
innerhalb der Schleife deklariert ist .
Es gibt noch eine Möglichkeit, Platzhalter mit string zu implementieren. Ersetzen, hilft seltsamerweise in bestimmten Situationen:
mystr = mystr.Replace("%soverflow", strVar);
Sie können den folgenden Weg 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.Eg einfügen müssen
WriteLine(String.Format("Name: {0}, Surname : {1}", name, surname));
Verwenden:
strVar = "stack"
mystr = String.Format("This is {0}", strVar);
Sie können dies mit Expansive erreichen: https://github.com/anderly/Expansive