Einführung in Strings¶
Ein string
in C# ist eine Sequenz von Unicode-Zeichen. Der string
-Typ ist eine Referenztyp und wird in .NET als unveränderlich (immutable) betrachtet. Das bedeutet, dass jede Modifikation an einem String zur Erstellung eines neuen String-Objekts führt.
string hello = "Hello, World!";
Console.WriteLine(hello); // Ausgabe: Hello, World!
Hello, World!
Zeichenfolgenliterale¶
Strings können mithilfe von Anführungszeichen initialisiert werden. Es gibt auch unformatierte Zeichenfolgenliterale, die mit @
markiert sind und Escape-Sequenzen ignorieren.
Beispiel:
string path = @"C:\Users\Documents\file.txt";
Console.WriteLine(path); // Ausgabe: C:\Users\Documents\file.txt
C:\Users\Documents\file.txt
Escape-Sequenzen¶
Escape-Sequenzen werden verwendet, um spezielle Zeichen in einem String darzustellen, z.B. \n
für einen Zeilenumbruch.
Escape-Sequenz | Bedeutung |
---|---|
\\ |
Rückwärtsschrägstrich |
\' |
Einfaches Anführungszeichen |
\" |
Doppelte Anführungszeichen |
\n |
Neue Zeile |
\t |
Tabulator |
Beispiel:
string sentence = "Hello\nWorld!";
Console.WriteLine(sentence); // Ausgabe: Hello (neue Zeile) World!
Hello World!
Unveränderlichkeit von Strings¶
Strings in C# sind unveränderlich. Jede Modifikation erzeugt eine neue Instanz des Strings, anstatt den bestehenden String zu ändern.
Beispiel:
string original = "Hello";
string modified = original.Replace('e', 'a');
Console.WriteLine(original); // Ausgabe: Hello
Console.WriteLine(modified); // Ausgabe: Hallo
Hello Hallo
String-Interpolation¶
String-Interpolation erlaubt es, Ausdrücke in einem String einzubetten, indem ein $
vor den String gesetzt wird.
Beispiel:
int x = 10;
int y = 20;
string result = $"Die Summe von {x} und {y} ist {x + y}.";
Console.WriteLine(result); // Ausgabe: Die Summe von 10 und 20 ist 30.
Die Summe von 10 und 20 ist 30.
Methoden von Strings¶
Strings in C# bieten viele Methoden zur Manipulation und Analyse von Zeichenfolgen.
Methode | Beschreibung |
---|---|
Length |
Gibt die Anzahl der Zeichen im String zurück. |
ToUpper() |
Gibt eine Kopie des Strings in Großbuchstaben zurück. |
ToLower() |
Gibt eine Kopie des Strings in Kleinbuchstaben zurück. |
Trim() |
Entfernt Leerzeichen am Anfang und Ende des Strings. |
Contains() |
Prüft, ob der String eine bestimmte Zeichenfolge enthält. |
Beispiel:
string test = " Hello ";
Console.WriteLine(test.Trim()); // Ausgabe: Hello
Console.WriteLine(test.ToUpper()); // Ausgabe: HELLO
Console.WriteLine(test.Contains("Hel")); // Ausgabe: True
Hello HELLO True
Zugriff auf einzelne Zeichen¶
Ein string
kann wie ein Array behandelt werden, um auf einzelne Zeichen zuzugreifen.
Beispiel:
string word = "Hello";
char firstChar = word[0];
Console.WriteLine(firstChar); // Ausgabe: H
H
Suchen und Vergleichen von Strings¶
C# bietet verschiedene Methoden zum Suchen und Vergleichen von Strings, wie IndexOf()
, LastIndexOf()
, StartsWith()
und Equals()
.
Methode | Beschreibung |
---|---|
IndexOf() |
Gibt den Index des ersten Vorkommens eines Zeichens oder einer Zeichenfolge zurück. |
LastIndexOf() |
Gibt den Index des letzten Vorkommens zurück. |
StartsWith() |
Prüft, ob der String mit einer bestimmten Zeichenfolge beginnt. |
Equals() |
Vergleicht zwei Strings auf Gleichheit. |
Beispiel:
string text = "Hello World!";
int index = text.IndexOf('o');
Console.WriteLine(index); // Ausgabe: 4
4
Verwenden von LINQ mit Strings¶
LINQ kann verwendet werden, um Strings auf elegante Weise zu filtern, sortieren oder zu transformieren.
Beispiel:
string sentence = "This is a test sentence.";
var words = sentence.Split(' ')
.Where(w => w.Length > 2)
.OrderBy(w => w);
foreach (var word in words)
{
Console.WriteLine(word);
}
sentence. test This
Der Datentyp char
¶
In C# wird der Datentyp char
verwendet, um ein einzelnes Unicode-Zeichen zu repräsentieren. Ein char
ist ein 16-Bit-Wert und wird in einfachen Anführungszeichen dargestellt.
Beispiel:
char letter = 'A';
Console.WriteLine(letter); // Ausgabe: A
A
Eigenschaften und Methoden von char
¶
Der char
-Typ hat nützliche Methoden, die es ermöglichen, Zeichen zu analysieren und zu manipulieren, z. B. ob es sich um ein Zahlzeichen oder einen Buchstaben handelt.
Methode | Beschreibung |
---|---|
char.IsDigit(c) |
Prüft, ob das Zeichen eine Ziffer ist. |
char.IsLetter(c) |
Prüft, ob das Zeichen ein Buchstabe ist. |
char.IsLower(c) |
Prüft, ob das Zeichen ein Kleinbuchstabe ist. |
char.IsUpper(c) |
Prüft, ob das Zeichen ein Großbuchstabe ist. |
Beispiel:
char digit = '5';
bool isDigit = char.IsDigit(digit);
Console.WriteLine(isDigit); // Ausgabe: True
True
Zugriff auf Strings als Arrays von char
¶
Ein String in C# kann als ein Array von char
behandelt werden. Jedes Zeichen eines Strings ist über einen nullbasierten Index zugänglich, ähnlich wie bei Arrays.
Beispiel:
string word = "Hello";
char firstChar = word[0]; // Zugriff auf das erste Zeichen
char lastChar = word[word.Length - 1]; // Zugriff auf das letzte Zeichen
Console.WriteLine(firstChar); // Ausgabe: H
Console.WriteLine(lastChar); // Ausgabe: o
H o
Konvertieren eines Strings in ein char
-Array¶
Man kann einen String explizit in ein char[]
(ein Array von Zeichen) umwandeln, um direkten Zugriff auf jedes Zeichen zu erhalten und es zu manipulieren.
Beispiel:
string example = "Array";
char[] charArray = example.ToCharArray();
foreach (char c in charArray)
{
Console.WriteLine(c); // Ausgabe: A r r a y
}
A r r a y
Modifizieren von Zeichen in einem char
-Array¶
Da Strings in C# unveränderlich sind, kann man sie nicht direkt ändern. Stattdessen kann man ein char[]
verwenden, um die Zeichenfolge zu modifizieren, und dann das Array wieder in einen String konvertieren.
Beispiel:
string original = "Hello";
char[] charArray = original.ToCharArray();
charArray[1] = 'a'; // Modifizieren des zweiten Zeichens
string modified = new string(charArray);
Console.WriteLine(modified); // Ausgabe: Hallo
Hallo
Umformatiertes Zeichenfolgenliteral mit """
¶
In C# kannst du mit dreifachen doppelten Anführungszeichen ("""
) eine Zeichenfolge definieren, die Formatierungen wie Zeilenumbrüche und Einrückungen direkt beibehält. Dieses Feature wurde in C# 11 eingeführt und erlaubt es, mehrzeilige Zeichenfolgen literarisch darzustellen, ohne auf Escape-Sequenzen wie \n
oder \t
angewiesen zu sein.
Syntax¶
Ein umformatiertes Zeichenfolgenliteral beginnt und endet mit drei doppelten Anführungszeichen ("""
). Der Text innerhalb dieser Begrenzung wird genau so übernommen, wie er zwischen den Anführungszeichen steht, einschließlich Zeilenumbrüchen und Leerzeichen.
Beispiel:¶
string multiLineString = """
Dies ist eine mehrzeilige Zeichenfolge.
Sie behält ihre Formatierung bei,
einschließlich Zeilenumbrüchen und Leerzeichen.
""";
Console.WriteLine(multiLineString);
Dies ist eine mehrzeilige Zeichenfolge. Sie behält ihre Formatierung bei, einschließlich Zeilenumbrüchen und Leerzeichen.
Einrückungen in umformatierten Literalen¶
Die Einrückung eines umformatierten Zeichenfolgenliterals wird automatisch an der Position des schließenden """
ausgerichtet. Das bedeutet, dass der Text so formatiert wird, wie er im Code steht. Zusätzliche Leerzeichen am Anfang jeder Zeile können jedoch zu einem weniger gut formatierten String führen, wenn die Formatierung im Code nicht sorgfältig durchgeführt wird.
Beispiel mit zusätzlicher Einrückung:
string text = """
Dies ist ein Beispiel für eine Zeichenfolge mit Einrückung.
Der Abstand wird beibehalten, je nachdem, wie der Text im Code geschrieben ist.
""";
Console.WriteLine(text);
Dies ist ein Beispiel für eine Zeichenfolge mit Einrückung. Der Abstand wird beibehalten, je nachdem, wie der Text im Code geschrieben ist.
Kombination mit Interpolation¶
Umformatierte Zeichenfolgenliterale unterstützen auch String-Interpolation, sodass du Variablen oder Ausdrücke in den Text einfügen kannst.
Beispiel:
string name = "Welt";
string interpolated = $"""
Hallo, {name}!
Willkommen zu dieser mehrzeiligen Zeichenfolge.
""";
Console.WriteLine(interpolated);
Hallo, Welt! Willkommen zu dieser mehrzeiligen Zeichenfolge.
Vorteile von umformatierten Zeichenfolgenliteralen¶
- Lesbarkeit: Mehrzeilige Strings können ohne Escape-Sequenzen definiert werden, was den Code lesbarer macht.
- Formattreue: Der String behält die genaue Formatierung bei, wie er im Code erscheint, einschließlich Zeilenumbrüchen und Leerzeichen.
- Einfache Interpolation: Die Verwendung von Interpolation in mehrzeiligen Strings erleichtert die dynamische Einbindung von Werten.