Kurse:Datentypen-C-Sharp

Aus ahrensburg.city
Version vom 1. September 2025, 23:05 Uhr von Thorsten (Diskussion | Beiträge) (// via Wikitext Extension for VSCode)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

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.