【发布时间】:2018-07-16 11:25:52
【问题描述】:
在 Python 中,这将是 final_char = mystring[-1]。我怎样才能在 Rust 中做同样的事情?
我试过了
mystring[mystring.len() - 1]
但我收到错误 the type 'str' cannot be indexed by 'usize'
【问题讨论】:
-
你的意思是unicode代码点的字符?
-
@BB 您或许应该回答的问题(主要是为您自己)是
café的最后一个“字符”是é还是´。如果它应该是é,你想通过字形而不是chars 进行迭代。 -
@BB 我认为您正在向后看。文本处理是困难,因为人类语言很复杂,将它们编码到计算机中也很复杂。 Rust 有一小部分意见(例如,字符串是 UTF-8),但除此之外必须不干涉以允许程序员为他们的案例构建他们需要的正确抽象。正如其他人所提到的,将字符串视为字符包最终是不正确的,因为在我们的全球世界中,“字符”的定义并不明确。
-
@BB Python 3 在正确的 Unicode 处理方面取得了长足的进步,但它仍然没有提供使用字素的简单方法——Rust(使用
unicode-segmentationcrate)实际上在这方面更好看待。如果您将"café"[-1]复制并粘贴到您的Python 解释器中,它可能不会给您"é"。