如何遍历Rust中字符串中的字符来匹配单词?

Lan*_*ard 5 string iteration rust

我想迭代一句话来从字符串中提取出简单的单词.这是我到目前为止所做的,尝试在输入字符串中使parse函数首先匹配world:

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"
}
Run Code Online (Sandbox Code Playgroud)

迭代字符串中的字符以匹配Rust中的模式(例如基本解析器)的正确方法是什么?

Bur*_*hi5 2

使用该方法可以轻松检查字符串中的单词str::contains

至于编写解析器本身,我认为 Rust 与其他语言没有什么不同。您必须创建某种状态机。

例如,您可以查看serialize::json. 我还编写了一个CSV 解析器,它通过一种方便的方法使用缓冲区read_char。使用这种方法的优点是您不需要立即将整个输入加载到内存中。