从文档来看,目前尚不清楚.在Java中,您可以使用如下split方法:
"some string 123 ffd".split("123");
Man*_*rth 120
使用 split()
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();
Den*_*din 35
有三种简单的方法:
按分隔符:
s.split("separator")
通过空格:
s.split_whitespace()
按换行符:
s.lines()
每种结果都是一个迭代器:
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());
Den*_*hin 25
splitstructString有一种特殊的方法:
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"]);
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(' ') {
    // ...
}
split返回一个Iterator,您可以将其转换为Vec使用collect:split_line.collect::<Vec<_>>().通过迭代器而不是Vec直接返回a 有几个优点:
split很懒.这意味着在您需要之前它不会真正拆分线.这样,如果你只需要前几个值split_line.take(2).collect::<Vec<_>>(),它就不会浪费时间分割整个字符串:或者,即使你只需要第一个可以转换为整数的值:split_line.filter_map(|x| x.parse::<i32>().ok()).next().最后一个例子不会浪费时间尝试处理"23.0",但会在找到"1"后立即停止处理.split没有假设你想要存储结果的方式.您可以使用a Vec,但也可以使用实现的任何内容,FromIterator<&str>例如a LinkedList或a VecDeque,或任何实现的自定义类型FromIterator<&str>.| 归档时间: | 
 | 
| 查看次数: | 73194 次 | 
| 最近记录: |