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

时间:2014-03-29 22:58:11

标签: 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"
}

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

1 个答案:

答案 0 :(得分:1)

使用str::contains方法检查字符串中的单词很简单。

至于编写解析器本身,我认为它与Rust在其他语言方面没有任何不同。你必须创建某种状态机。

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