2014-03-29 67 views
5

我想遍历一个句子以从字符串中提取简单的单词。这里是我到目前为止,试图在输入字符串中parse功能第一场比赛world如何遍历Rust中字符串中的字符以匹配单词?

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" 
} 

什么是通过字符串中的字符匹配鲁斯特的模式(如迭代的正确方法一个基本的解析器)?

+1

请注意,您的示例不能从tip中编译最新的Rust。使用'c =='w''来比较字符。 – BurntSushi5

回答

1

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

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

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

+0

我清理了你的答案,以删除一些过时的方面,但不知道当前的rust-csv架构,所以你可能想进一步编辑... – Shepmaster