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

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