如何在Rust中迭代str或String的前缀与后缀?
字符串前缀/后缀迭代实现方案
嘿,针对你要处理字符串 "abcd" 的这四个迭代需求,我整理了Python下的实现方案,每个都简单直接,看看对你有没有帮助:
1. 从最短到最长迭代其前缀:""、"a"、"ab"、"abc"、"abcd"
利用Python的切片语法,通过循环控制切片的结束位置,从0开始逐步扩展到字符串长度:
s = "abcd" for i in range(len(s) + 1): print(s[:i])
解释:s[:i] 会取字符串从开头到索引i(不包含)的子串。当i=0时得到空串,随着i递增,子串长度逐渐增加,直到i=4时取到完整的字符串。
2. 从最长到最短迭代其前缀:"abcd"、"abc"、"ab"、"a"、""
只需要把上面的循环顺序反过来,从字符串长度开始递减到0:
s = "abcd" for i in range(len(s), -1, -1): print(s[:i])
解释:range(len(s), -1, -1) 生成从4到0的整数序列,每次循环取的前缀长度逐步缩短,直到最后得到空串。
3. 从最短到最长迭代其后缀:""、"d"、"cd"、"bcd"、"abcd"
这次用切片的起始位置来控制,从字符串末尾开始往前移动:
s = "abcd" for i in range(len(s), -1, -1): print(s[i:])
解释:s[i:] 会取字符串从索引i到末尾的子串。当i=4时(等于字符串长度)得到空串,i递减时,子串的起始位置往前移,长度逐渐增加,直到i=0时取到完整字符串。
4. 从最长到最短迭代其后缀:"abcd"、"bcd"、"cd"、"d"、""
把第三个需求的循环顺序反过来,从0开始递增到字符串长度:
s = "abcd" for i in range(len(s) + 1): print(s[i:])
解释:i从0开始,每次取的后缀从完整字符串开始,随着i递增,后缀的起始位置后移,长度逐渐缩短,直到i=4时得到空串。
内容的提问来源于stack exchange,提问作者Andrey Bienkowski




