1. String 和 &str 转换
1.1 - &str/String + &str/String -> String
let s1 = "0";
let s2 = "1";
let s = format!("{}{}", s1, s2);
let s1 = "0";
let s2 = "1".to_string();
let s = format!("{}{}", s1, s2);
1.2 - String -> &str
let s: String = String::from("Hello");
let s_ref: &str = &s;
let s: String = String::from("Hello");
let s_ref: &str = s.as_str();
1.3 - String -> &str/&[u8]/&vec[u8](unsafe)
let s: String = String::from("Hello");
let s_ref: &str = &s;
let s: String = String::from("Hello");
let s_ref: &str = s.as_str();
let s: String = String::from("Hello");
let bytes = s.as_bytes();
unsafe {
let mut s: String = String::from("Hello");
let vec_bytes: &mut Vec<u8> = s.as_mut_vec();
}
1.4 &str/&[u8]/&vec[u8](unsafe) -> String
let s = "Hello";
let s_string = s.to_string();
let s_string = s.to_owned();
let s: &[u8] = &[];
let s_string: String = String::from_utf8(s.to_vec()).unwrap();
let s: Vec<u8> = vec![];
let s_string = String::from_utf8(s).unwrap();
2. 字符串的常用方法
let s = "Hello, world!";
let length = s.len();
let s = "Hello, world!";
let substring: Option<&str> = s.get(7..12);
let s: &str = "I like Rust. Rust is great.";
let new_s: String = s.replace("Rust", "Python");
let s: &str = "apple,banana,cherry";
let fruits: Vec<&str> = s.split(",").collect();
let s: &str = "Hello, world!";
let starts_with_h: bool = s.starts_with("Hello");
let ends_with_bang: bool = s.ends_with("!");
let s: &str = "Hello, World!";
let uppercase: String = s.to_uppercase();
let lowercase: String = s.to_lowercase();
let s: &str = " Hello, world! ";
let trimmed: &str = s.trim();
let s: &str = "Hello, world!";
let index: Option<usize> = s.find(",");
3. 遍历字符串
let s = "Hello, 世界!";
for c in s.chars() { println!("{}", c); }
let s = "Hello, 世界!";
for byte in s.bytes() { println!("{}", byte); }
let my_string = String::from("Hello, world!");
for (index, ch) in my_string.char_indices() {
println!("Index: {}, Character: {}", index, ch);
}
let s = "hello,world,rust";
for part in s.split(',') {
println!("{}", part);
}
let s = r#"
<div>
<p>Hello, world!</p>
</div>
"#;
for line in s.lines() {
println!("{}", line);
}