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