Ermittlung der Zeichenkettenlänge

Rust:
Ermittlung der Zeichenkettenlänge

How to:

fn main() {
    let gruss = String::from("Hallo Welt");
    let laenge = gruss.chars().count(); // Zeichen zählen
    println!("Die Länge des Strings ist: {}", laenge);
}

Output:

Die Länge des Strings ist: 10

Achtung: .len() gibt die Anzahl der Bytes zurück, nicht immer die Anzahl der Zeichen.

Deep Dive

Die Länge eines Strings in Rust zu bestimmen, war nicht immer so direkt wie heute. Früher war es komplizierter, zuverlässig die Zeichenzahl zu bekommen, besonders mit Unicode-Zeichen. Rust schützt vor vielen Stolpersteinen, die in anderen Sprachen üblich sind.

Alternativen:

  • .len() gibt zurück, wie viel Speicherplatz der String in Bytes belegt. Das passt, wenn nur ASCII-Zeichen verwendet werden.
  • .chars().count() zählt die char Zeichen, was bei Unicode die korrekte Zeichenanzahl liefert.

Implementierungsdetails:

  • Rust verarbeitet intern Strings als UTF-8, dessen Zeichen variable Länge haben. Daher ist .chars().count() langsamer als .len(), aber genauer für internationale Texte.
  • Beim Umgang mit Grapheme Clustern, wie Emojis, wird’s komplexer. Hier wird die unicode-segmentation Crate gebraucht, um genaue Ergebnisse zu erzielen.

See Also