This article has been localized into German by the community.
Text (string)
Ein string (Zeichenfolge) ist ein stück Text. Es besteht normalerweise aus 2 oder mehreren Zeichen, da es sich bei nur einem um ein char (Zeichen) handelt. Zeichenfolgen können jedoch auch leer oder sogar null sein, da es sich um einen Referenztyp handelt. Eine Zeichenfolge kann wie die anderen Datentypen deklariert werden, mit denen wir bereits gearbeitet haben:
string s;
Oder wenn Sie ihm sofort einen Wert zuweisen möchten:
string name = "John Doe";
Alles in einem Satz von Anführungszeichen in C# wird wie im obigen Beispiel als String betrachtet. Um ein oder mehrere Zeichen zwischen doppelten Anführungszeichen zu setzen, müssen Sie dem Compiler einfach sagen, dass der Inhalt zwischen ihnen als Zeichenfolge interpretiert werden soll anstatt als Schlüsselwörter und Befehle.
Strings sind unveränderbar
In C # sind Strings unveränderbar, was bedeutet, dass sie nach der Erstellung nicht mehr geändert werden können. Das ist natürlich nicht sehr praktisch im täglichen Gebrauch, deshalb hilft uns das Framework - anstatt neue Zeichenfolgen zu definieren, um Änderungen vorzunehmen, erstellt es einfach eine neue Zeichenfolge für Sie jedes Mal, wenn Sie die bestehende ändern. Dies macht es zu einem nahtlosen Prozess, aber es kann auch Ihren Code weniger effizient machen, ohne dass Sie es bemerken. Hier ein Beispiel, um es zu illustrieren:
string numbers = "";
for (int i = 0; i < 10000; i++)
numbers += i.ToString();
In diesem Fall wird die Schleife 10.000 Mal durchlaufen, wobei jedes Mal der aktuelle Index an die Zeichenkette angehängt wird. Mit dem Wissen, das Sie gerade gewonnen haben, wissen Sie nun, dass statt der Änderung der vorhandenen Zeichenfolge die letzte Zahl hinzugefügt wird, eine neue Zeichenfolge erstellt und dann der alten Variablen zugewiesen wird, sodass der alte Wert vom Framework bereinigt wird. Und das passiert 10.000 mal! Stattdessen wird im Allgemeinen empfohlen, einen sogenannten StringBuilder zu verwenden, wenn Sie wissen, dass Sie eine Zeichenfolge über mehrere Operationen hinweg erstellen werden:
StringBuilder numbers = new StringBuilder();
for (int i = 0; i < 10000; i++)
numbers.Append(i);
Console.WriteLine(numbers.ToString());
Grundlegende Zeichenketten Operationen
Mit all dem gehörten, dass die Zeichenketten unveränderlich sind, werden Sie feststellen, dass Sie selbst mit einfachen Zeichenketten arbeiten und diese verändern, und Sie machen sich darüber keine Sorgen - es sei denn, Sie arbeiten in einer riesigen Schleife, möglicherweise ist es kein Problem! Hier sind einige der grundlegenden Dinge, die Sie mit Zeichenketten tun können:
Sie können zwei oder mehr Zeichenfolgen verketten , indem Sie sie einfach "addieren" (indem Sie den Plus-Operator verwenden):
string name = "John" + " " + "Doe";
Dasselbe können Sie natürlich auch mit Variablen tun, wo Sie Strings in Anführungszeichen und Variablen mischen, die entweder Strings sind oder die in Strings umgewandelt werden können (mit der ToString() -Methode, die für alle Objekte gefunden wird). Eine "sauberere" Vorgehensweise ist jedoch die Format -Methode für die String-Klasse:
string name = "John Doe";
int age = 42;
string userString = String.Format("{0} is {1} years old and lives in {2}", name, age, "New York");
Beachten Sie, wie ich nummerierte Platzhalter ({0}, {1} usw.) verwende und dann die Werte als Parameter für die Methode angebe. Denken Sie daran, dass die Indizes und die Anzahl der Platzhalter den Parametern entsprechen müssen, die Sie übergeben!
Mit der Eigenschaft Length können Sie die aktuelle Länge einer Zeichenfolge überprüfen, z.B.: zu Validierungszwecken. Die Eigenschaft Length (Länge) ist auch sehr nützlich in Kombination mit anderen Eigenschaften und Methoden, z. die Methoden Substring() und IndexOf(). Die Substring-Methode ermöglicht es Ihnen, einen Teil der Zeichenfolge abzurufen, während die IndexOf-Methode es Ihnen ermöglicht, den ersten Index eines bestimmten Zeichens / einer Zeichenfolge zu finden. Erlauben Sie mir, das mit einem Beispiel zu illustrieren:
string name = "John Doe";
int indexOfSpace = name.IndexOf(' ') + 1;
string lastName = name.Substring(indexOfSpace, name.Length - indexOfSpace);
Console.WriteLine(lastName);
Schnelle Erklärung: Wir definieren einen Namen, dann verwenden wir die IndexOf() Methode, um die erste Position eines Leerzeichen zu finden. Dann verwenden wir die Substring() -Methode, um alles nach dem Leerzeichen zu erhalten, indem wir sowohl eine Startposition als auch eine Länge angeben.
Eine weitere coole Hilfsmethode für die String-Klasse ist die Replace() -Methode. Sie ermöglicht Ihnen, eine Zeichenfolge zu nehmen und dann eine Such- / Ersetzungsoperation wie folgt auszuführen:
string name = "John Doe";
Console.WriteLine(name.Replace("John", "Jane"));
Die Replace() -Methode ist überhaupt nicht streng - wenn die Zeichenfolge, nach der Sie suchen (der erste Parameter) nicht vorhanden ist, wird nichts passieren (es werden keine Fehlermeldungen erscheinen oder ähnliches). Wenn es vorhanden ist, wird es durch den zweiten Parameter ersetzt. Wenn Sie jedoch vor dem Ersetzen überprüfen möchten, können Sie die Methode Contains() verwenden:
string name = "John Doe";
if (name.Contains("John"))
Console.WriteLine(name.Replace("John", "Jane"));
else
Console.WriteLine("John was not found!");
Manchmal möchten Sie wissen, ob eine Zeichenfolge mit einem bestimmten Zeichen oder einer Zeichenfolge beginnt oder endet. Dafür kann Ihnen die String-Klasse mit den Methoden StartsWith() und EndsWith() helfen, die genau so funktionieren, wie es der Name angibt:
string name = "John Doe";
if ((name.StartsWith("John")) && (name.EndsWith("Doe")))
Console.WriteLine("Hello, Mr. Doe!");
Es gibt noch mehr coole String-Methoden, und es gibt definitiv mehr Möglichkeiten, sie zu verwenden, als diese kurzen Beispiele zeigen. Wenn Sie mehr darüber erfahren möchten, sehen Sie sich die MSDN Dokumentation für die String-Klasse an.
Wörtliche Zeichenketten & Austreten
Wenn Sie eine Zeichenfolge definieren, werden Sie schnell feststellen, dass bestimmte Zeichen spezielle Zwecke haben. Das wichtigste Beispiel hierfür ist das Anführungszeichen, da es verwendet wird, um dem Compiler den Anfang und das Ende eines Strings zu markieren, wie können Sie es innerhalb Ihres Strings verwenden? Die einfachste Antwort darauf ist das "Backslash", wo Sie dem Compiler signalisieren, dass ein Sonderzeichen statt seiner üblichen Funktion wörtlich zu behandeln ist. Hier ist ein Beispiel:
Console.WriteLine("What do you mean by \"Hello, world\" ??");
Nach dem ausführen, sieht das Ergebnis wie folgt aus:
What do you mean by "Hello, world" ??
Mit anderen Worten, wir verwenden einfach umgekehrte Schrägstriche vor einem doppelten Anführungszeichen, um anzuzeigen, dass dies NICHT das Ende der Zeichenkette ist, sondern stattdessen ein doppeltes Anführungszeichen. Also ... was ist, wenn wir eigentlich einen Backslash haben wollen und ihn nicht einfach benutzen, um einem anderen Charakter zu entkommen? Nun, dann musst du dem auch entkommen - mit einem weiteren Backslash:
Console.WriteLine("Right here \\ Right now");
Resultat:
Right here \ Right now
Der umgekehrte Schrägstrich wird nicht nur verwendet, um doppelte Anführungszeichen zu umgehen. Er wird auch verwendet, um eine Reihe von Zeichen vorzuspannen, um ihnen eine besondere Bedeutung zu geben. Zum Beispiel ist \n eine neue Zeile, \t ist ein Tab-Zeichen und so weiter. Sie finden eine schöne Liste von Escape-Sequenzen hier.
Wörtliche Zeichenketten
Als Alternative zu diesen ganzen "Vorzeichen" können Sie eine wörtliche-Zeichenfolge verwenden. Es ist wie eine reguläre Zeichenketten Deklaration, aber mit dem @ -Zeichen vorangestellt, und darin werden alle Zeichen wörtlich behandelt:
Console.WriteLine(@"In a verbatim string \ everything is literal: \n & \t");
Die Ausgabe wird aussehen wie die Eingabe:
In a verbatim string \ everything is literal: \n & \t
Es gibt nur eine Ausnahme von dieser Regel: Ein Anführungszeichen muss maskiert werden, aber das macht ziemlich viel Sinn, denn sonst würde der Compiler denken, dass Sie versuchen, die Zeichenfolge zu beenden oder nicht? In einer wörtlichen Zeichenfolge wird ein Anführungszeichen jedoch nicht mit einem umgekehrten Schrägstrich, sondern mit einem weiteren doppelten Anführungszeichen wie folgt gesetzt:
Console.WriteLine(@"What do you mean by ""Hello, world"" ??");
Das Ergebnis sieht wie folgt aus:
What do you mean by "Hello, world" ??
Zusammenfassung
Strings oder Zeichenketten sind ein SEHR wichtiges Thema für alle Programmierer - Sie werden wahrscheinlich eine Art von Zeichenketten-Verarbeitung für einen Großteil der Zeit, die Sie mit dem Schreiben von Code beschäftigt sind. Glücklicherweise hat C# alle Werkzeuge, die Sie dafür benötigen, wie ich in diesem Artikel zu erklären und zeigen versucht habe.