Vorgehensweise: Verketten mehrerer Zeichenfolgen (C#-Handbuch)
Verkettung ist der Prozess des Anhängens einer Zeichenfolge an das Ende einer anderen Zeichenfolge. Sie verketten Zeichenfolgen mit dem Operator +
. Bei Zeichenfolgenliteralen und Zeichenfolgenkonstanten erfolgt die Verkettung beim Kompilieren. Es erfolgt keine Verkettung zur Laufzeit. Bei Zeichenfolgenvariablen erfolgt die Verkettung nur zur Laufzeit.
Hinweis
Die C#-Beispiele in diesem Artikel werden in der Inlinecodeausführung und dem Playground von Try.NET ausgeführt. Klicken Sie auf die Schaltfläche Ausführen, um ein Beispiel in einem interaktiven Fenster auszuführen. Nachdem Sie den Code ausgeführt haben, können Sie ihn ändern und den geänderten Code durch erneutes Anklicken der Schaltfläche Ausführen ausführen. Der geänderte Code wird entweder im interaktiven Fenster ausgeführt, oder das interaktive Fenster zeigt alle C#-Compilerfehlermeldungen an, wenn die Kompilierung fehlschlägt.
Tipp
Sie können KI-Hilfe verwenden, um Zeichenfolgen mit GitHub Copilot zu verketten.
Zeichenfolgenliterale
Im folgenden Beispiel wird ein langes Zeichenfolgenliteral in kleinere Zeichenfolgen aufgeteilt, um die Lesbarkeit im Quellcode zu verbessern. Der Code verkettet die kleineren Zeichenfolgen, um das lange Zeichenfolgenliteral zu erstellen. Die Teile werden zur Kompilierzeit zu einer einzelnen Zeichenfolge verkettet. Es entstehen unabhängig von der Anzahl an Zeichenfolgen keine Leistungseinbußen zur Laufzeit.
// Concatenation of literals is performed at compile time, not run time.
string text = "Historically, the world of data and the world of objects " +
"have not been well integrated. Programmers work in C# or Visual Basic " +
"and also in SQL or XQuery. On the one side are concepts such as classes, " +
"objects, fields, inheritance, and .NET Framework APIs. On the other side " +
"are tables, columns, rows, nodes, and separate languages for dealing with " +
"them. Data types often require translation between the two worlds; there are " +
"different standard functions. Because the object world has no notion of query, a " +
"query can only be represented as a string without compile-time type checking or " +
"IntelliSense support in the IDE. Transferring data from SQL tables or XML trees to " +
"objects in memory is often tedious and error-prone.";
System.Console.WriteLine(text);
+
und +=
Operatoren
Zum Verketten von Zeichenfolgenvariablen können Sie die Operatoren +
und +=
, die Zeichenfolgeninterpolation oder die Methoden String.Format, String.Concat, String.Join oder StringBuilder.Append verwenden. Der Operator +
ist einfach zu verwenden und gut für intuitiv verständlichen Code geeignet. Auch wenn Sie mehrere +
Operatoren in einem Befehl verwenden, wird der Zeichenketteninhalt nur einmal kopiert. Der folgende Code zeigt Beispiele für die Verwendung der Operatoren +
und +=
zum Verketten von Zeichenfolgen:
string userName = "<Type your name here>";
string dateString = DateTime.Today.ToShortDateString();
// Use the + and += operators for one-time concatenations.
string str = "Hello " + userName + ". Today is " + dateString + ".";
System.Console.WriteLine(str);
str += " How are you today?";
System.Console.WriteLine(str);
Zeichenfolgeninterpolierung
In einigen Ausdrücken ist es einfacher, Zeichenfolgen mithilfe der Zeichenfolgeninterpolation zu verketten, wie in folgendem Beispiel gezeigt wird:
string userName = "<Type your name here>";
string date = DateTime.Today.ToShortDateString();
// Use string interpolation to concatenate strings.
string str = $"Hello {userName}. Today is {date}.";
System.Console.WriteLine(str);
str = $"{str} How are you today?";
System.Console.WriteLine(str);
Hinweis
Bei der Zeichenfolgenverkettung behandelt der C#-Compiler eine NULL-Zeichenfolge wie eine leere Zeichenfolge.
Sie können die Zeichenfolge-Interpolation verwenden, um eine konstante Zeichenfolge zu initialisieren, wenn alle für Platzhalter verwendeten Ausdrücke ebenfalls konstante Zeichenfolgen sind.
String.Format
Eine andere Methoden zum Verketten von Zeichenfolgen ist String.Format. Diese Methode funktioniert gut, wenn Sie eine Zeichenfolge mit einer kleinen Anzahl von Zeichenfolgenkomponenten erstellen.
StringBuilder
In anderen Fällen kann es passieren, dass Sie Zeichenfolgen in einer Schleife kombinieren, bei der Sie nicht wissen, wie viele Quellzeichenfolgen kombiniert werden, und die tatsächliche Anzahl an Quellzeichenfolgen kann in solchen Fällen sehr groß sein. Für solche Szenarios wurde die Klasse StringBuilder entwickelt. Im folgenden Code werden Zeichenfolgen mit der Methode Append der Klasse StringBuilder verkettet.
// Use StringBuilder for concatenation in tight loops.
var sb = new System.Text.StringBuilder();
for (int i = 0; i < 20; i++)
{
sb.AppendLine(i.ToString());
}
System.Console.WriteLine(sb.ToString());
Erfahren Sie mehr über die Gründe für das Verketten von Zeichenfolgen oder die StringBuilder
-Klasse.
String.Concat
oder String.Join
Eine weitere Option zum Verketten von Zeichenfolgen aus einer Sammlung ist die Verwendung der Methode String.Concat. Verwenden Sie die Methode String.Join, wenn ein Trennzeichen die Quellzeichenfolgen trennen soll. Der folgenden Code kombiniert ein Array aus Wörtern mithilfe beider Methoden:
string[] words = { "The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog." };
var unreadablePhrase = string.Concat(words);
System.Console.WriteLine(unreadablePhrase);
var readablePhrase = string.Join(" ", words);
System.Console.WriteLine(readablePhrase);
LINQ und Enumerable.Aggregate
Die letzte Option zum Verketten von Zeichenfolgen aus einer Sammlung ist die Verwendung von LINQ und der Methode Enumerable.Aggregate. Diese Methode kombiniert die Quellzeichenfolgen mithilfe eines Lambdaausdrucks. Der Lambdaausdruck fügt jede Zeichenfolge der vorhandenen Akkumulation zu. Im folgenden Beispiel wird ein Array von Worten kombiniert, indem zwischen jedem Wort im Array Leerzeichen hinzugefügt werden:
string[] words = { "The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog." };
var phrase = words.Aggregate((partialPhrase, word) =>$"{partialPhrase} {word}");
System.Console.WriteLine(phrase);
Diese Option kann mehr Zuordnungen verursachen als andere Methoden zum Verketten von Auflistungen, da sie eine Zwischenzeichenfolge für jede Iteration erstellt. Wenn die Optimierung der Leistung von entscheidender Bedeutung ist, sollten Sie die Klasse StringBuilder
oder die Methode String.Concat
oder String.Join
zur Verkettung einer Sammlung anstelle von Enumerable.Aggregate
verwenden.
Verwenden von GitHub Copilot zum Verketten von Zeichenfolgen
Sie können GitHub Copilot in Ihrer IDE verwenden, um C#-Code zu generieren, um mehrere Zeichenfolgen zu verketten. Sie können die Eingabeaufforderung anpassen, um Zeichenfolgen und die für Ihre Anforderungen zu verwendende Methode anzugeben.
Der folgende Text zeigt eine Beispiel-Eingabeaufforderung für Copilot Chat.
Generate C# code to use String.Format to build an output string "Hi x, today's date is y. You are z years old." where x is "John", y is today's date and z is the birthdate January 1, 2000. The final string should show date in the full format mm/dd/yyyy. Show output.
GitHub Copilot wird von KI unterstützt. Daher sind Überraschungen und Fehler möglich. Weitere Informationen finden Sie unter Copilot FAQs.
Erfahren Sie mehr über GitHub Copilot in Visual Studio und GitHub Copilot in VS Code.