w[.. 和有什么不一样。1] 和 w[0],为什么 w[0] 不起作用?[复制]

What is the difference between w[..1] and w[0] in this code, and why didn't w[0] work? [duplicate]

提问人:Lee Solgyu 提问时间:3/5/2023 最后编辑:cafce25Lee Solgyu 更新时间:3/5/2023 访问量:41

问:

  str.split_whitespace()
        .map(|w| w[..1].to_uppercase() +&w[1..].to_lowercase())
        .collect()

w[0]并且完全相同,但我知道使用会导致错误。我想知道为什么会发生错误。w[..1]w[0]

我对它们俩的了解:返回一个字符,并返回一个包含第一个字符的字符串切片。w[0]w[..1]

字符串 字典 字符 切片

评论

0赞 cafce25 3/5/2023
您是否知道您的代码在像 ?"ü"

答:

1赞 cafce25 3/5/2023 #1

"w[0]返回单个字符“,不,不能按(或任何整数)索引,因为索引总是产生对内部的引用,并且您自己表示您期望 a,但没有任何 s 我们可以引用开始,因为字符串存储在字符串切片中以 UTF-8 编码。&strusizeselfcharchar

为了避免错误,Rust 根本没有提供 a,但你仍然可以明确地告诉 Rust 你想要使用 as_bytesbyteschars 方法中的任何一个来获得字节切片、迭代器、迭代器。您可以使用第 n 个迭代器“索引”Index<usize> for &stru8charu8char