gpt4 book ai didi

string - 如何获取 &str 的最后一个字符?

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

在 Python 中,这将是 final_char = mystring[-1]。我怎样才能在 Rust 中做同样的事情?

我试过了

mystring[mystring.len() - 1]

但我得到错误'str'类型不能被'usize'索引

最佳答案

这就是您获取最后一个 char 的方式(这可能不是您认为的“字符”):

mystring.chars().last().unwrap();

仅当您确定字符串中至少有一个字符时才使用unwrap


警告:关于一般情况(与 Python 中的 mystring[-n] 做同样的事情):UTF-8 字符串不能通过索引使用,因为索引不是 O(1) 操作(Rust 中的字符串不是数组)。请阅读this获取更多信息。

但是,如果你想像在 Python 中一样从末尾开始索引,你必须在 Rust 中这样做:

mystring.chars().rev().nth(n - 1) // Python: mystring[-n]

并检查是否有这样的字符。

如果您怀念 Python 语法的简单性,您可以编写自己的扩展:

trait StrExt {
fn from_end(&self, n: usize) -> char;
}

impl<'a> StrExt for &'a str {
fn from_end(&self, n: usize) -> char {
self.chars().rev().nth(n).expect("Index out of range in 'from_end'")
}
}

fn main() {
println!("{}", "foobar".from_end(2)) // prints 'b'
}

关于string - 如何获取 &str 的最后一个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48642342/

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