如何在Rust中简洁获取字符串的最后n个字符?
Rust中如何简洁获取字符串最后5个字符?
在Python中,获取字符串最后5个字符可以用非常简洁的写法:
s[-5:]
你目前想到的Rust写法确实比较冗长:
s.chars().rev().take(5).collect::<Vec<_>>().into_iter().rev().collect()
其实可以简化掉中间转Vec的步骤,直接通过迭代器的rev()和take()组合实现,写法更简洁:
s.chars().rev().take(5).rev().collect::<String>()
如果你的字符串是ASCII编码(每个字符占1字节),还可以通过字节切片的方式更快实现,但这种方式不适用于包含多字节UTF-8字符的场景:
String::from_utf8_lossy(s.as_bytes().get(s.len().saturating_sub(5)..).unwrap_or(s.as_bytes())).to_string()
另外,如果你经常需要这类操作,可以自己封装一个工具函数,让代码更直观:
fn last_n_chars(s: &str, n: usize) -> String { s.chars().rev().take(n).rev().collect() } // 使用示例 let s = "Hello, Rustaceans!"; let last_five = last_n_chars(s, 5); // 得到 "ceans!"
内容的提问来源于stack exchange,提问作者Test
相关产品推荐
相关产品推荐

