2014-03-29 4 views
5

Ich möchte durch einen Satz iterieren, um einfache Wörter aus der Zeichenfolge zu extrahieren. Hier ist, was ich habe bisher versucht, die parse Funktion erste Spiel world in der Eingabezeichenfolge zu machen:Wie man durch Buchstaben in einer Zeichenkette in Rust iteriert, um Wörter zusammenzubringen?

fn parse(input: String) -> String { 
    let mut val = String::new(); 

    for c in input.chars() { 
     if c == "w".to_string() { 
      // guessing I have to test one character at a time 
      val.push_str(c.to_str()); 
     } 
    } 

    return val; 
} 

fn main() { 
    let s = "Hello world!".to_string(); 
    println!("{}", parse(s)); // should say "world" 
} 

Was ist der richtige Weg durch die Zeichen in einer Zeichenfolge iterieren Muster in Rust entsprechen (wie zB für ein einfacher Parser)?

+1

Beachten Sie, dass Ihr Beispiel nicht auf dem neuesten Rust von Tipp kompiliert. Verwenden Sie 'c == 'w'', um Zeichen zu vergleichen. – BurntSushi5

Antwort

1

Mit der Methode str::contains ist das Suchen nach Wörtern in einer Zeichenfolge einfach.

Wenn ich einen Parser selbst schreibe, glaube ich nicht, dass es in Rust anders ist als in anderen Sprachen. Sie müssen eine Art Zustandsmaschine erstellen.

Zum Beispiel können Sie serialize::json auschecken. Ich schrieb auch eine CSV parser, die einen Puffer mit einer bequemen read_char Methode verwendet. Der Vorteil dieses Ansatzes besteht darin, dass Sie nicht die gesamte Eingabe gleichzeitig in den Speicher laden müssen.

+0

Ich räumte Ihre Antwort auf, um einige veraltete Aspekte zu entfernen, aber war mir nicht sicher über die aktuelle Architektur von Rost-CSV, also möchten Sie vielleicht weiter bearbeiten ... – Shepmaster

Verwandte Themen