CodeGym /Kurse /C# SELF /Fortgeschrittene String-Interpolation

Fortgeschrittene String-Interpolation

C# SELF
Level 9 , Lektion 2
Verfügbar

1. Erinnern wir uns an String-Interpolation

Ziemlich oft müssen wir nicht einfach nur einen String ausgeben, sondern Werte von Variablen darin einfügen. Früher hat man dafür entweder Konkatenation (+) oder die Methode string.Format benutzt. Aber seitdem in C# die Magie der String-Interpolation (string interpolation) eingeführt wurde, ist das Leben viel besser geworden.

Wie funktioniert String-Interpolation

Füge vor dem String das Zeichen $ hinzu und benutze innerhalb des Strings geschweifte Klammern {}, um Variablen oder sogar ganze Ausdrücke einzufügen.

Vergleich des alten und neuen Stils der Ausgabe mit Variablen

string name = "Anna";
int age = 24;

Console.WriteLine("Ich heiße " + name + ", ich bin " + age + " Jahre alt."); // Alter Stil
Console.WriteLine($"Ich heiße {name}, ich bin {age} Jahre alt."); // Neuer Stil!

Du kannst direkt Berechnungen und Ausdrücke einfügen:


int a = 5, b = 10;
Console.WriteLine($"Summe {a} + {b} = {a + b}");

2. Wie funktioniert String-Interpolation

Vor den String kommt $, und Variablen oder Ausdrücke werden in geschweifte Klammern {} gesetzt:


string name = "Anna";
int age = 24;

Console.WriteLine($"Ich heiße {name}, ich bin {age} Jahre alt.");
  • Alles, was außerhalb der Klammern steht, ist einfach Text.
  • Alles, was innerhalb der Klammern steht, wird als C#-Code interpretiert: Das kann ein Variablenname, eine Rechnung, ein Methodenaufruf usw. sein.

Berechnungen und Ausdrücke direkt im String

Interpolation ist nicht auf einfache Variablen beschränkt! Das kannst du machen:

Arithmetische Ausdrücke
int apples = 7;
int pears = 5;
Console.WriteLine($"Ich habe insgesamt {apples + pears} Früchte."); // 12
Operationen mit Strings und Methoden
string city = "Budapest";
Console.WriteLine($"Stadt in Großbuchstaben: {city.ToUpper()}"); // BUDAPEST
Ternäre Operatoren, Bedingungen
int score = 90;
Console.WriteLine($"Bewertung: {(score >= 60 ? "bestanden" : "nicht bestanden")}");
Methodenaufrufe
string FormatUser(string name, int age) => $"{name} ({age})";
Console.WriteLine($"Benutzer: {FormatUser("Eva", 19)}"); // Benutzer: Eva (19)
Arbeiten mit Arrays und Collections
int[] numbers = { 3, 5, 7 };
Console.WriteLine($"Summe: {numbers.Sum()}");
Console.WriteLine($"Elemente: {string.Join(", ", numbers)}");
Verschachtelte Ausdrücke und komplexe Konstruktionen
var user = new { Name = "Oleg", Role = "Admin" };
Console.WriteLine($"Name: {user.Name}, Rolle: {(user.Role == "Admin" ? "Administrator" : "Benutzer")}");
Achtung:

Ausdrücke in den Klammern sollten kurz und lesbar sein. Wenn die Logik kompliziert ist, berechne sie besser vorher und setze eine fertige Variable ein.

Mehrstufige Ausdrücke
var student = new { Name = "Sascha", Info = new { Age = 21, Uni = "Harvard" } };
Console.WriteLine($"Name: {student.Name}, Uni: {student.Info.Uni}");
Typumwandlungen on the fly
double price = 19.99;
int count = 3;
Console.WriteLine($"Gesamtkosten: {price * count} Euro");
Datum und Uhrzeit – direkt im gewünschten Format
DateTime now = DateTime.Now;
Console.WriteLine($"Heute: {now.Day}.{now.Month}.{now.Year}");
Beispiel mit Schleife
var days = new[] { "Mo", "Di", "Mi" };
Console.WriteLine($"Wochentage: {string.Join(", ", days)}");

3. Formatierung innerhalb der Interpolation

Oft ist es wichtig, Zahlen, Daten, Währungen oder Prozente schön darzustellen.
Mit Interpolation kannst du direkt in den Klammern das Format nach dem Doppelpunkt angeben.

Allgemeine Syntax: {ausdruck:format}

Zahlen formatieren

double num = 1234.5678;
Console.WriteLine($"Gerundet: {num:F2}");     // 1234.57
Console.WriteLine($"Exponentialform: {num:E1}"); // 1.2E+003
Console.WriteLine($"Mit Tausendertrennzeichen: {num:N}"); // 1 234,57 (kulturspezifisch)

Beispiele für Formate:

  • F2 — zwei Nachkommastellen
  • N0 — Tausendertrennzeichen, 0 Nachkommastellen
  • E1 — Exponentialdarstellung, 1 Nachkommastelle
  • P0 — Prozent, 0 Nachkommastellen
double ratio = 0.1234;
Console.WriteLine($"Prozent: {ratio:P1}"); // 12,3 %

Datumsformatierung

DateTime d = new DateTime(2025, 6, 18, 15, 42, 0);
Console.WriteLine($"Datum: {d:dd.MM.yyyy}");         // 18.06.2025
Console.WriteLine($"Uhrzeit: {d:HH:mm}");             // 15:42
Console.WriteLine($"ISO: {d:yyyy-MM-ddTHH:mm:ss}"); // 2025-06-18T15:42:00

Kurz zu Datumsformaten:

  • dd — Tag (2 Ziffern)
  • MM — Monat
  • yyyy — Jahr
  • HH:mm — Stunde:Minute (24h)
  • d — kurzes Datum nach Kultur
  • D — langes Datum

Währungs- und Geldformatierung

decimal cost = 2999.5m;
Console.WriteLine($"Preis: {cost:C}"); // 2,999.50 $  (je nach Kultur)

Ausrichtung und Padding

Du kannst die Feldbreite und die Ausrichtung (rechts/links) angeben:

int val = 7;
Console.WriteLine($"[{val,5}]");  // [    7] — rechtsbündig
Console.WriteLine($"[{val,-5}]"); // [7    ] — linksbündig

Kombinierte Formate

DateTime dt = DateTime.Now;
Console.WriteLine($"Heute {dt:dddd, dd MMMM yyyy}, Uhrzeit {dt:HH:mm}");

Interpolation mit verschiedenen Datentypen

bool ok = true;
Console.WriteLine($"Operation {(ok ? "erfolgreich" : "Fehler")}");

Mehrzeilige Strings mit Interpolation

Seit kurzem gibt es auch raw string literals und mehrzeilige interpolierte Strings:

string user = "Timur";
int score = 100;

Console.WriteLine($"""
    Glückwunsch, {user}!
    Dein Ergebnis: {score}
    """);

Verschachtelte Interpolation und Berechnungen

Du kannst Methoden aufrufen, deren Ergebnis formatieren und in den String einfügen:

double[] temps = { 23.4, 25.1, 21.9 };
Console.WriteLine($"Durchschnittstemperatur: {temps.Average():F1}°C");

Beispiel mit Tabelle (Ausrichtung + Format)

Formatierung und Ausrichtung in einer Tabelle mit Interpolation

double[] prices = { 123.4, 8.9, 5643.0 };
for (int i = 0; i < prices.Length; i++)
    Console.WriteLine($"Artikel {i + 1}: {prices[i],10:F2} Euro");

Ergebnis:

Artikel 1:    123.40 Euro
Artikel 2:      8.90 Euro
Artikel 3:   5643.00 Euro

4. Escaping und Interpolation zusammen

Du kannst Escape-Zeichen und Interpolation gleichzeitig verwenden:

string user = "Masha";
Console.WriteLine($"Hallo, \"{user}\"!\nSchön, dich kennenzulernen.");

Ausgabe:

Hallo, "Masha"!
Schön, dich kennenzulernen.

Wenn du das mit Verbatim-Strings kombinierst, kommt einfach zuerst $, dann @ (geht aber auch andersrum – ist gleichwertig):

string path = "C:\\Temp";
Console.WriteLine($@"Datei gefunden unter: ""{path}""");
2
Aufgabe
C# SELF, Level 9, Lektion 2
Gesperrt
Datentabelle mit Ausrichtung und Formatierung.
Datentabelle mit Ausrichtung und Formatierung.
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION