Rust有内置函数可将字符串按空格分割,类似于:
然而,我希望有一种方法将字符串拆分为单词,并附上它们在字符串中的相应位置。
let mut iter = " Hello world".split_whitespace();
assert_eq!(Some("Hello"), iter.next());
assert_eq!(Some("world"), iter.next());
然而,我希望有一种方法将字符串拆分为单词,并附上它们在字符串中的相应位置。
let mut iter = ??????(" Hello world");
assert_eq!(Some((1, "Hello")), iter.next());
assert_eq!(Some((7, "world")), iter.next());
考虑到以下问题:
内置的
split
和split_whitespace
函数“消耗”了空格,所以我不知道在给定元素之前有多少空格。我应该从split('')
开始,并以某种方式将非空格字符“组合”在一起吗?有一个
match_indices
函数可以执行类似的操作,但它只能查找给定字符串或使用闭包查找字符。
是否有内置的方法解决这个问题?还是我需要迭代一个std::str::Chars
迭代器?
如果是这样,如何从给定字符的Chars
迭代器转换为表示下一个单词的字符串?是否有安全的方法从函数中返回它?(编译器迄今为止从未让我这样做)
match_indices
文档而言,它似乎不能让你要求“将字符串按所有非空格字符组进行拆分,并给出每个组的第一个元素的索引”。难道它可以吗? - phtrivier