Menu
Coddy logo textTech

String-Slices erstellen

Teil des Abschnitts Logic & Flow der Rust-Journey von Coddy — Lektion 55 von 66.

Da Sie nun den Unterschied zwischen String und &str verstehen, lernen wir, wie man String-Slices aus bestehenden Strings erstellt. Es gibt zwei Hauptmöglichkeiten, um ein &str aus einem String zu erstellen.

Der einfachste Weg ist die Verwendung des Referenz-Operators & mit Ihrem String. Dies erstellt einen Slice, der auf den gesamten String verweist:

let my_string = String::from("Hello World");
let slice: &str = &my_string; // Dies erstellt einen Slice des gesamten Strings

Sie können auch Slices von bestimmten Teilen eines Strings mithilfe der Range-Syntax erstellen. Das Format ist &string[start..end], wobei start der Startindex ist und end eins nach dem letzten Zeichen liegt, das Sie einschließen möchten. Diese Indizes sind vom Typ usize, was Rusts vorzeichenloser Ganzzahltyp für Indizierung und Größen ist — er kann nur Null oder positiv sein, was sinnvoll ist, da ein String-Index niemals negativ sein kann:

let my_string = String::from("Hello World");
let first_word = &my_string[0..5]; // Dies ergibt "Hello"
let second_word = &my_string[6..11]; // Dies ergibt "World"
challenge icon

Aufgabe

Einfach

Sie erhalten zwei Eingaben. Die erste Eingabe ist ein vollständiger Satz, und die zweite Eingabe besteht aus zwei durch ein Leerzeichen getrennten Zahlen, die den Start- und Endindex für die Erstellung eines Slices darstellen. Erstellen Sie einen String aus der ersten Eingabe und erstellen Sie dann einen String-Slice unter Verwendung des durch die beiden Indizes angegebenen Bereichs. Geben Sie den ursprünglichen String in der ersten Zeile und den extrahierten Slice in der zweiten Zeile aus.

Anforderungen:

  • Lesen Sie die erste Eingabe (den vollständigen Satz) ein und entfernen Sie Leerzeichen am Anfang und Ende (trim)
  • Erstellen Sie einen String aus dieser Eingabe
  • Lesen Sie die zweite Eingabe (zwei durch ein Leerzeichen getrennte Zahlen) ein und entfernen Sie Leerzeichen am Anfang und Ende (trim)
  • Teilen Sie die zweite Eingabe am Leerzeichen auf, um den Start- und Endindex zu erhalten
  • Parsen Sie beide Indizes zu usize
  • Erstellen Sie einen String-Slice mit der Range-Syntax &string[start..end]
  • Geben Sie den ursprünglichen String aus
  • Geben Sie den extrahierten Slice aus

Eingabe:

  • Erste Zeile: Ein Satz (z. B. Hello World)
  • Zweite Zeile: Zwei durch ein Leerzeichen getrennte Zahlen (z. B. 0 5)

Ausgabe:

  • Erste Zeile: Der ursprüngliche String
  • Zweite Zeile: Der extrahierte Slice

Spickzettel

Es gibt zwei Hauptwege, um ein &str aus einem String zu erstellen.

Verwenden Sie den Referenzoperator &, um einen Slice des gesamten Strings zu erstellen:

let my_string = String::from("Hello World");
let slice: &str = &my_string;

Verwenden Sie die Range-Syntax &string[start..end], um Slices von bestimmten Teilen zu erstellen:

let my_string = String::from("Hello World");
let first_word = &my_string[0..5]; // "Hello"
let second_word = &my_string[6..11]; // "World"

Der start-Index ist inklusiv und der end-Index ist exklusiv (eins nach dem letzten Zeichen).

Probier es selbst

use std::io;

fn main() {
    // Lies die erste Eingabe (den vollständigen Satz)
    let mut sentence = String::new();
    io::stdin().read_line(&mut sentence).expect("Failed to read line");
    let sentence = sentence.trim();
    
    // Lies die zweite Eingabe (zwei durch ein Leerzeichen getrennte Zahlen)
    let mut indices = String::new();
    io::stdin().read_line(&mut indices).expect("Failed to read line");
    let indices = indices.trim();
    
    // TODO: Schreibe deinen Code unten
    // Analysiere die Indizes und erstelle den String-Slice
    
    
    // Gib den ursprünglichen String und den Slice aus
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logic & Flow