Kurse:Datentypen-C-Sharp
C# String-Operationen und wichtige Methoden
Grundlagen
- Deklaration
string name = "Alice";
string leer = string.Empty;
- Verkettung
string full = vorname + " " + nachname;
string interp = $"{vorname} {nachname}";
var builder = new StringBuilder().Append(vorname).Append(' ').Append(nachname).ToString();
Häufig genutzte Eigenschaften
- Length – Anzahl der UTF-16 Codeeinheiten (nicht zwingend Benutzer-grafeme)
Vergleich
string.Equals(a, b); // Ordinal, case-sensitiv
string.Equals(a, b, StringComparison.OrdinalIgnoreCase);
a.Equals(b, StringComparison.Ordinal);
a == b; // Wertvergleich
string.Compare(a, b, StringComparison.Ordinal);
Suchen
str.Contains("abc", StringComparison.Ordinal);
str.StartsWith("pre", StringComparison.OrdinalIgnoreCase);
str.EndsWith("suf", StringComparison.Ordinal);
str.IndexOf("x", StringComparison.Ordinal);
str.LastIndexOf('.');
Extrahieren
str.Substring(startIndex);
str.Substring(startIndex, length);
str[startIndex]; // einzelnes char
Teilstrings moderner (Span-Slicing)
ReadOnlySpan<char> span = str.AsSpan();
var teil = span.Slice(5, 3); // vermeidet Kopie
Aufteilen & Zusammenfügen
var parts = str.Split('.', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries);
string joined = string.Join(";", parts);
Trimmen
str.Trim(); // Whitespace
str.TrimStart();
str.TrimEnd();
str.Trim('0'); // spezifische Zeichen
Ersetzen
str.Replace("alt", "neu");
str.Replace('a', 'b');
Regex.Replace(str, "[0-9]+", "#");
Formatierung
string.Format("Wert: {0:N2}", value);
$"Wert: {value:N2}";
value.ToString("N2", CultureInfo.InvariantCulture);
Groß/Kleinschreibung
str.ToUpperInvariant();
str.ToLower(CultureInfo.CurrentCulture);
Einfügen & Entfernen
str.Insert(index, "XYZ");
str.Remove(startIndex);
str.Remove(startIndex, count);
Pad (Auffüllen)
"42".PadLeft(5, '0'); // 00042
"42".PadRight(5, '.'); // 42...
Zeichenprüfung
char.IsLetterOrDigit(ch);
char.IsWhiteSpace(ch);
Immutable Hinweis
Strings sind unveränderlich. Viele Operationen erzeugen neue Instanzen. Für viele Verkettungen: StringBuilder.
StringBuilder
var sb = new StringBuilder(capacity:256)
.Append("Zeile ").AppendLine("1")
.AppendFormat("Wert={0}", 123);
string result = sb.ToString();
Sicherheitsrelevante Vergleiche
CryptographicOperations.FixedTimeEquals(
MemoryMarshal.AsBytes("secret"u8),
MemoryMarshal.AsBytes(eingabe.AsSpan()));
Null / Empty / WhiteSpace
string.IsNullOrEmpty(str);
string.IsNullOrWhiteSpace(str);
Interpolated String Handler (Performance)
[InterpolatedStringHandler]
public ref struct LogHandler {
// eigener Handler für Logging
}
Raw String Literals (C# 11)
string json = """
{
"id": 1,
"name": "Alice"
}
""";
Escapes
string pfad = @"C:\Temp\log.txt";
string zeile = "Text\nNeue Zeile\tTab";
Normalisierung (Unicode)
string norm = str.Normalize(NormalizationForm.FormC);
Split vs Span
Für Hochleistung: str.AsSpan().Split(...) (ab .NET 8: MemoryExtensions.Split)
Zusammenfassung
Kurzliste: Length, Indexer, Substring, Contains, StartsWith, EndsWith, IndexOf, Split, Join, Trim*, Replace, Insert, Remove, PadLeft/Right, ToUpper*/ToLower*, Format/$-Interpolation, Equals/Compare, Normalize, StringBuilder.