这个(playground):
let s = "Hello world!";
let splitted_string = s.split_terminator("").skip(1).collect::<Vec<&str>>();
println!("splitted_string: {:?}", splitted_string);
将产生以下输出:
splitted_string: ["H", "e", "l", "l", "o", " ", "w", "o", "r", "l", "d", "!"]
如何在每个元素之间插入一个a
并获得这样的内容?
["H", "a", "e", "a", "l", "a", "l", "a", "o", "a", " ", "a", "w", "a", "o", "a", "r", "a", "l", "a", "d", "a", "!"]
2条答案
按热度按时间n8ghc7c11#
已经有一个很好的
.flat_map()
答案,但是为了多样性,为了给予一个稍微不同的方法,我们可以通过使用.take()
来删除结尾处的额外“a”:产出:
我已经更新了答案,以解决字符串中的字节数与字节数不匹配的情况,方法是应用
s.chars().count()
而不是s.len()
。请注意,s.chars().count()
是一个O(n)
操作。atmip9wb2#
它仍然是实验性的,但
iter::intersperse
确实做到了。关于example:
与此同时,
itertools::intersperse
crate也具有相同的功能。一种只使用当前稳定标准库的解决方案:
结果如下:
Playground