如何在 Rust 中获取字符串的最后 n 个字符?

Tes*_*est 2 rust

在 python 中,你可以像这样获取字符串的最后 5 个字符:

s[-5:]
Run Code Online (Sandbox Code Playgroud)

如何在 Rust 中简洁地完成同样的事情?我能想到的最好的办法是非常冗长:

s.chars().rev().take(5).collect::<Vec<_>>().into_iter().rev().collect()
Run Code Online (Sandbox Code Playgroud)

Ang*_*ros 6

使用char_indices

let s = "Hello, World!";
let last_five = {
    let split_pos = s.char_indices().nth_back(4).unwrap().0;
    &s[split_pos..]
};
assert_eq!("orld!", last_five);
Run Code Online (Sandbox Code Playgroud)

如果您需要经常执行此操作,请考虑使用 UTF-32 编码。要将字符串转换为 UTF-32,您需要执行以下操作:let utf_32: Vec<char> = s.chars().collect()。在这种情况下你可以这样做&utf_32[utf_32.len()-5..]