Rust編程基礎:017、String類型

1、創建一個空String

let mut s0 = String::new();
s0.push_str("hello");
println!("s0 = {}", s0);

2、通過字面值創建一個String
(1)使用String::from()

let s1 = String::from("init some thing");
println!("s1 = {}", s1);

(2)使用str的方式

let s1 = "init some thing".to_string();
println!("s1 = {}", s1);

3、更新String
(1)push_str()

let mut s2 = String::from("hello");
s2.push_str(", world");
println!("s2 = {}", s2);

let ss = "!".to_string();
s2.push_str(&ss);
println!("s2 = {}", s2);
println!("ss = {}", ss);

(2)push()

let mut s2 = String::from("tea");
s2.push('m'); // push()只能添加一個字符
println!("s2 = {}", s2);

(3)使用“+”合併字符串

let s1 = "hello".to_string();
let s2 = String::from(", world");
let s3 = s1 + &s2;
println!("s3 = {}", s3);
// println!("s1 = {}", s1); // 錯誤!s1的所有權交給了s3
println!("s2 = {}", s2);

(4)使用format!

let s4 = String::from("tic");
let s5 = String::from("tac");
let s6 = String::from("toe");
let s7 = format!("{}-{}-{}", s4, s5, s6); // format!宏和println!類似
println!("s7 = {}", s7);
println!("s4 = {}", s4);
println!("s5 = {}", s5);
println!("s6 = {}", s6);

4、String索引

let s4 = String::from("hello");
// let s5 = s4[0];
println!("s4.len() = {}", s4.len());

let s4 = String::from("你好");
println!("s4.len() = {}", s4.len()); // Rust字符串用UTF-8編碼,所以這裏s4的長度爲6

5、str索引

let hello = "你好";
let h5 = &hello[0..3]; // 沒有問題
println!("h5 = {}", h5);
// let h6 = &hello[0..2]; // 錯誤!沒有對齊字符邊界
// println!("h6 = {}", h6);

6、遍歷
(1)chars

for c in s4.chars() {
    println!("c = {}", c);
}

(2)bytes

for b in s4.bytes() {
    println!("b = {}", b);
}

補充:Rust核心語言並不支持String類型,String是在標準庫裏實現的。
本節全部源代碼:
https://github.com/anonymousGiga/learn_rust/blob/master/learn_string/src/main.rs

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章