CodeGym /Kurse /C# SELF /Escaping, Sonderzeichen und String-Interpolation

Escaping, Sonderzeichen und String-Interpolation

C# SELF
Level 9 , Lektion 1
Verfügbar

1. Wichtige Sonderzeichen und Escaping

In der Programmierung bestehen Strings nicht nur aus Buchstaben, sondern auch aus speziellen Zeichen: Anführungszeichen, Zeilenumbrüche, Tabs und manchmal sogar Zeichen wie \n und \t. Aber wenn du in einem String Hallo, "user"! schreiben willst, fragt der Compiler sofort: „Und die Anführungszeichen im String – ist das ein Fehler?“. Genau hier brauchst du das Escaping.

In C# ist Escaping eine Möglichkeit, „eine besondere Behandlung“ für bestimmte Zeichen im String anzugeben. Dafür benutzt man den Backslash \ (auf Englisch „backslash“).

Klassische Sonderzeichen

Sequenz Beschreibung Demo
\n Zeilenumbruch Enter gedrückt
\t Tabulator Tab
\\ Buchstäblich „Backslash“ \
\" Anführungszeichen im String "
\' Einfaches Anführungszeichen (selten in Strings nötig) '
\r Carriage Return (alter Zeilenumbruch, selten genutzt)
\0 Null-Zeichen (Unsichtbar)
\b Backspace (löscht das vorherige Zeichen – funktioniert nicht immer in der Konsole)

Wie funktioniert das?

Lass uns ein paar Zeilen mit escaped Zeichen schreiben, um zu sehen, wie das läuft.


Console.WriteLine("Hallo, \"Benutzer\"!");
// Ausgabe: Hallo, "Benutzer"!

Console.WriteLine("C:\\Program Files\\MyApp");
// Ausgabe: C:\Program Files\MyApp

Console.WriteLine("Zeile 1\nZeile 2");
// Ausgabe:
// Zeile 1
// Zeile 2

Console.WriteLine("Ich\tliebe\tTabs!");
// Ausgabe:
// Ich     liebe   Tabs!

So kannst du mit einem einfachen Backslash (\) fast jedes Sonderzeichen in deinen String „schmuggeln“, ohne dass der Compiler oder dein Teamkollege ausflippt.

2. Normale und verbatim Strings (@-Strings)

Und was, wenn du ganz oft Backslashes schreiben musst – zum Beispiel bei Dateipfaden? Jedes Mal \\ zu tippen, ist echt nichts für schwache Nerven. Zum Glück gibt’s in C# verbatim String-Literale, die mit @ anfangen.

Wie sieht das aus?


string path = "C:\\Users\\Ann\\Documents\\";
string verbatimPath = @"C:\Users\Ann\Documents\";

In verbatim Strings brauchst du kein Escaping – der Backslash ist einfach ein normales Zeichen. Aber Achtung: Anführungszeichen im String musst du doppelt schreiben!


string quote = @"Das ist ein verbatim String mit Anführungszeichen: ""Hello""!";
Console.WriteLine(quote);
// Ausgabe: Das ist ein verbatim String mit Anführungszeichen: "Hello"!

Visueller Vergleich

Stil Syntax Wie funktioniert’s
Normal "C:\\Folder\\File.txt" Jeder \ ist doppelt
Verbatim (@) @"C:\Folder\File.txt" Alle \ sind normal
Verbatim mit Anführungszeichen @"Text mit ""Anführungszeichen"" drin" Anführungszeichen sind doppelt

Profi-Tipp: Verwende verbatim Strings für Dateipfade, mehrzeiligen Text und Regex-Templates.

3. Zeilenumbrüche und mehrzeilige Strings

Oft musst du eine mehrzeilige Nachricht oder ASCII-Art schreiben. Der direkteste Weg: \n im normalen String oder verbatim Literale nutzen. Ein verbatim Literal speichert alle Zeichen so, wie sie sind, inklusive Zeilenumbrüchen. Beispiel:


Console.WriteLine("Erste Zeile\nZweite Zeile");

Console.WriteLine(@"Mehrzeiliger String.
Hier brauchst du keine escaped Zeilenumbrüche
Und sogar Tabs    bleiben wie sie sind.");

Außerdem gibt’s in C# jetzt raw string literals (drei Anführungszeichen), mit denen du mehrzeiligen Text schreiben kannst, ohne Anführungszeichen zu verdoppeln. Beispiel:


string json = """
    {
        "name": "Alice",
        "age": 30,
        "skills": ["C#", "SQL", "Azure"]
    }
    """;

Console.WriteLine(json);

4. Unicode – wie C# alle Zeichen der Welt speichert

Heute arbeiten wir nicht nur mit dem lateinischen Alphabet, sondern auch mit Kyrillisch, chinesischen Schriftzeichen, mathematischen Symbolen und sogar Emojis. Das geht alles dank dem Zeichencodierungs-System Unicode.

Was ist Unicode?

Unicode ist ein internationaler Standard, der jedem Zeichen eine eindeutige Nummer (Codepoint) zuweist, egal welche Sprache oder Plattform. So kannst du in C# problemlos kyrillischen Text, Englisch, chinesische Schriftzeichen und sogar seltene Sonderzeichen mischen.

Beispiel für einen String in verschiedenen Sprachen:


Console.WriteLine("Hello, Welt! 你好! مرحبا!");

Unicode-Zeichen in Strings

Du kannst direkt alle Zeichen schreiben, die dein Encoding unterstützt, oder Escape-Sequenzen wie \uXXXX nutzen, wobei XXXX ein vierstelliger Hex-Code ist.


Console.WriteLine("Zeichen: \u263A"); // Gibt ☺ aus

Für Zeichen mit Code größer als 65535 (z.B. viele Emojis) nutzt man \UXXXXXXXX (8 Stellen):


Console.WriteLine("Smiley: \U0001F60A"); // Gibt 😊 aus

Was bringt dir das?

  • Du kannst jeden beliebigen Text speichern und verarbeiten.
  • Keine Angst vor Sprachmix oder exotischen Zeichen – C# und .NET unterstützen Unicode „out of the box“.
  • Superwichtig, wenn du mit internationalen Usern und ungewöhnlichen Alphabeten arbeitest.

5. Emojis und Sonderzeichen in Strings

Moderne Strings sind nicht nur Buchstaben, sondern auch Emojis! Zum Beispiel willst du dem User eine fröhliche Nachricht mit einem „Smiley“ schicken.

Wie füge ich ein Emoji in einen String ein?

Füge das Emoji direkt in den String ein:
Kopiere einfach das gewünschte Emoji (z.B. 😊, 🚀, 🐱) und füge es in deinen String-Literal ein:


Console.WriteLine("Hallo! 😊");

Nutze Unicode-Codes:
Für die meisten Emojis nutze \U und den 8-stelligen Code.


Console.WriteLine("Hier ist eine Katze: \U0001F431"); // 🐱

Emoji-Codes findest du in Unicode-Tabellen online.

Besonderheiten bei Emojis

Emojis können 2 oder mehr Zeichen im String belegen (weil ihr Unicode-Code größer als 16 Bit ist).

Bei manchen Operationen (z.B. String-Länge) gibt’s Überraschungen:


string s = "😊";
Console.WriteLine(s.Length); // Kann 2 statt 1 ausgeben!

Das liegt daran, dass der Codepoint dieses Smileys mit zwei Zeichen kodiert wird.

Beim Ausgeben in der Konsole oder auf einer Webseite werden die meisten Emojis korrekt angezeigt, wenn dein System und die Schriftart sie unterstützen.

Beispiel: String mit Emojis ausgeben


Console.WriteLine("Glückwunsch zum Erfolg! 🎉 Du bist super! 🚀");

6. Stolperfallen und typische Fehler

Anfänger verwechseln oft das Escaping von Anführungszeichen und Backslashes. Wenn du das Escaping vergisst, denkt der Compiler, dass dein String zu früh endet.

Fehler:


Console.WriteLine("Er sagte: "Hallo!""); // Fehler! Compiler-Panik.

Richtig:


Console.WriteLine("Er sagte: \"Hallo!\"");

Oder wenn du einen Dateipfad ausgeben willst, machen manche das so:


Console.WriteLine("C:\Temp\file.txt"); // Gibt Fehler oder unerwartetes Ergebnis, z.B.: C:  emp ile.txt

Denn \t und \f sind Sonderzeichen (Tab und Form Feed). Du kannst das auf zwei Arten fixen:


Console.WriteLine("C:\\Temp\\file.txt");    // Doppelte Backslashes
Console.WriteLine(@"C:\Temp\file.txt");     // Verbatim String

Wichtig: Wenn du einen verbatim String nutzt, aber Anführungszeichen brauchst, musst du sie doppelt schreiben:


Console.WriteLine(@"Datei ""config.txt"" nicht gefunden."); // Datei "config.txt" nicht gefunden.
2
Aufgabe
C# SELF, Level 9, Lektion 1
Gesperrt
Verwendung von Sonderzeichen und wörtlichen Zeichenfolgen
Verwendung von Sonderzeichen und wörtlichen Zeichenfolgen
2
Aufgabe
C# SELF, Level 9, Lektion 1
Gesperrt
Mehrzeiliger Text und Unicode-Zeichen
Mehrzeiliger Text und Unicode-Zeichen
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION