|
|
|
@ -64,7 +64,7 @@ let slice = &s[0..2];
|
|
|
|
|
let slice = &s[..2];
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
同样的,如果你的切片想要包含 `String` 的最后一个字节,则可以这样使用:
|
|
|
|
|
同样的,如果你的切片想要包含 `String` 的最后一个字节,则可以这样使用:
|
|
|
|
|
|
|
|
|
|
```rust
|
|
|
|
|
let s = String::from("hello");
|
|
|
|
@ -86,7 +86,7 @@ let slice = &s[0..len];
|
|
|
|
|
let slice = &s[..];
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
> 在对字符串使用切片语法时需要格外小心,切片的索引必须落在字符之间的边界位置,也就是 UTF-8 字符的边界,例如中文在 UTF-8 中占用三个字节,下面的代码就会崩溃:
|
|
|
|
|
> 在对字符串使用切片语法时需要格外小心,切片的索引必须落在字符之间的边界位置,也就是 UTF-8 字符的边界,例如中文在 UTF-8 中占用三个字节,下面的代码就会崩溃:
|
|
|
|
|
>
|
|
|
|
|
> ```rust
|
|
|
|
|
> let s = "中国人";
|
|
|
|
@ -204,7 +204,7 @@ fn say_hello(s: &str) {
|
|
|
|
|
|
|
|
|
|
## 字符串索引
|
|
|
|
|
|
|
|
|
|
在其它语言中,使用索引的方式访问字符串的某个字符或者子串是很正常的行为,但是在 Rust 中就会报错:
|
|
|
|
|
在其它语言中,使用索引的方式访问字符串的某个字符或者子串是很正常的行为,但是在 Rust 中就会报错:
|
|
|
|
|
|
|
|
|
|
```rust
|
|
|
|
|
let s1 = String::from("hello");
|
|
|
|
@ -607,7 +607,7 @@ fn main() {
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
当然,在某些情况下,可能你会希望保持字符串的原样,不要转义:
|
|
|
|
|
当然,在某些情况下,可能你会希望保持字符串的原样,不要转义:
|
|
|
|
|
```rust
|
|
|
|
|
fn main() {
|
|
|
|
|
println!("{}", "hello \\x52\\x75\\x73\\x74");
|
|
|
|
|