我想迭代一句话来从字符串中提取出简单的单词。这是我到目前为止所做的,尝试在输入字符串中使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中的模式(例如基本解析器)的正确方法是什么?
答案 0 :(得分:1)
使用str::contains
方法检查字符串中的单词很简单。
至于编写解析器本身,我认为它与Rust在其他语言方面没有任何不同。你必须创建某种状态机。
例如,您可以查看serialize::json
。我还写了一个CSV parser,它使用一个方便的read_char
方法的缓冲区。使用这种方法的好处是您不需要立即将整个输入加载到内存中。