gpt4 book ai didi

rust - 将字符串拆分为偏移子字符串的功能方法

转载 作者:行者123 更新时间:2023-11-29 07:57:03 24 4
gpt4 key购买 nike

我在 rustc 1.0.0-beta (9854143cb 2015-04-02)(2015-04-02 构建)

我的目标是将长度为 n 的字符串拆分为 n-k+1 个长度为 k 的偏移子字符串。我的意思是如果你有一个字符串:

ABCDEF

我正在尝试获取包含任意长度 k 的偏移子字符串的向量/迭代器。例如,k=3 会产生

ABC
BCD
CDE
DEF

k=2 会产生:

AB
BC
CD
DE
EF

请注意,空格仅包含在上方以对齐子字符串以显示它们之间的关系。输出向量将只包含ABBCCD等。此外,只支持ASCII也可以,尽管我更喜欢更安全的更通用的解决方案。

虽然看起来很痛苦,但以下程序代码似乎有效:

fn offset_slices(s: &str, n: usize) -> Vec<&str> {
let mut slices: Vec<&str> = Vec::new();
for (i,_) in s.chars().enumerate() {
if i > s.len() - n {
break;
}
slices.push(&s[i..(i+n)]);
}
slices
}

但这很讨厌,我更喜欢功能更强大的解决方案。我花了几个小时试图找出一种方法,并在此过程中学到了很多东西,但我在这个问题上遇到了困难。

有什么想法吗?

PS - 我真的很惊讶 slices.push(&s[i..(i+n)]) 上面的编译。它只是返回指向输入的不同位置的指针吗?

最佳答案

fn offset_slices(s: &str, n: usize) -> Vec<&str> {
(0 .. s.len() - n + 1).map(|i| &s[i .. i + n]).collect()
}

关于rust - 将字符串拆分为偏移子字符串的功能方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29720886/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com