从文档来看,还不清楚。在Java中,你可以像这样使用split方法:
"some string 123 ffd".split("123");
从文档来看,还不清楚。在Java中,你可以像这样使用split方法:
"some string 123 ffd".split("123");
当前回答
还有split_whitespace()
fn main() {
let words: Vec<&str> = " foo bar\t\nbaz ".split_whitespace().collect();
println!("{:?}", words);
// ["foo", "bar", "baz"]
}
其他回答
如果您正在寻找python风格的拆分,即对拆分字符串的两端进行元组解包,您可以这样做
if let Some((a, b)) = line.split_once(' ') {
// ...
}
使用分割()
let mut split = "some string 123 ffd".split("123");
这将给出一个迭代器,您可以对其进行循环,或将collect()转换为一个向量。
for s in split {
println!("{}", s)
}
let vec = split.collect::<Vec<&str>>();
// OR
let vec: Vec<&str> = split.collect();
有三种简单的方法:
分隔符: S.split ("separator") | S.split ('/') | S.split (char::is_numeric) 空格: s.split_whitespace () 换行: s.lines () 通过regex:(使用regex crate) Regex::新(r \ s) .unwrap()。分开(“一二三”)
每种类型的结果都是一个迭代器:
let text = "foo\r\nbar\n\nbaz\n";
let mut lines = text.lines();
assert_eq!(Some("foo"), lines.next());
assert_eq!(Some("bar"), lines.next());
assert_eq!(Some(""), lines.next());
assert_eq!(Some("baz"), lines.next());
assert_eq!(None, lines.next());
还有split_whitespace()
fn main() {
let words: Vec<&str> = " foo bar\t\nbaz ".split_whitespace().collect();
println!("{:?}", words);
// ["foo", "bar", "baz"]
}
struct String有一个特殊的split方法:
fn split<'a, P>(&'a self, pat: P) -> Split<'a, P> where P: Pattern<'a>
按字符分割:
let v: Vec<&str> = "Mary had a little lamb".split(' ').collect();
assert_eq!(v, ["Mary", "had", "a", "little", "lamb"]);
按字符串分割:
let v: Vec<&str> = "lion::tiger::leopard".split("::").collect();
assert_eq!(v, ["lion", "tiger", "leopard"]);
按闭包分割:
let v: Vec<&str> = "abc1def2ghi".split(|c: char| c.is_numeric()).collect();
assert_eq!(v, ["abc", "def", "ghi"]);