我希望能够分离bb
和cc
上的字符串aabbaacaaaccaaa
,但不能分离b
或c
上的字符串.这个例子的结果是aa,aacaaa,aaa
.
我已经可以在一个分隔符上拆分字符串,words()函数可以在\n
和\t
上拆分字符串,所以我认为这是可能的.
我希望能够分离bb
和cc
上的字符串aabbaacaaaccaaa
,但不能分离b
或c
上的字符串.这个例子的结果是aa,aacaaa,aaa
.
我已经可以在一个分隔符上拆分字符串,words()函数可以在\n
和\t
上拆分字符串,所以我认为这是可能的.
不幸的是,你现在不能这么做.不过,您可以在多个char
分隔符上拆分can,就像words
一样.你需要给split
个字符分配一个片段:
for part in "a,bc;d".split(&[',', ';'][..]) {
println!(">{}<", part);
}
但是,如果您try 使用字符串:
for part in "a,bc;d".split(&[",", ";"][..]) {
println!(">{}<", part);
}
您将得到以下错误:
error[E0277]: expected a `Fn<(char,)>` closure, found `[&str]`
--> src/main.rs:2:32
|
2 | for part in "a,bc;d".split(&[",", ";"][..]) {
| ^^^^^^^^^^^^^^^ expected an `Fn<(char,)>` closure, found `[&str]`
|
= help: the trait `Fn<(char,)>` is not implemented for `[&str]`
= note: required because of the requirements on the impl of `FnOnce<(char,)>` for `&[&str]`
= note: required because of the requirements on the impl of `Pattern<'_>` for `&[&str]`
在nightly Rust中,您可以为自己的类型实现Pattern
,其中包括一段字符串.
如果您对使用标准库之外的支撑良好的 crate 很满意,您可以使用regex:
use regex; // 1.4.5
fn main() {
let re = regex::Regex::new(r"bb|cc").unwrap();
for part in re.split("aabbaacaaaccaaa") {
println!(">{}<", part);
}
}