通过正则表达式拆分字符串以获得 Vec<String>

Vil*_*lda 4 string rust

我正在尝试拆分std::string::String usingregex::Regex并获取Vec<String>. 最小代码如下所示:

let words: Vec<String> = Regex::new(r"\W+")
    .unwrap()
    .split(&file_raw.to_owned())
    .collect()
    .map(|x| x.to_string());
Run Code Online (Sandbox Code Playgroud)

在最后一行我收到一个错误:method not found in 'std::vec::Vec<&str>'带有注释:

let words: Vec<String> = Regex::new(r"\W+")
    .unwrap()
    .split(&file_raw.to_owned())
    .collect()
    .map(|x| x.to_string());
Run Code Online (Sandbox Code Playgroud)

这个问题与这个问题非常相似,但提供的解决方案正是我尝试过但失败的解决方案。String::split如果有人能够解释按成员函数拆分和Regex::split.

egg*_*yal 8

您的.collect()返回Vec不是迭代器。您当然可以从Vecwith获取迭代器.iter(),然后应用.map(),但我怀疑您真正想要的是在.map()您之前.collect()

let words: Vec<String> = Regex::new(r"\W+")
    .unwrap()
    .split(&file_raw.to_owned())
    .map(|x| x.to_string())
    .collect();
Run Code Online (Sandbox Code Playgroud)