Rust-字符串

fn main() {

    // 1. 创建字符串
    let s1 = String::new();
    let s2 = String::with_capacity(100);

    let s3 = String::from("hello");
    let s4 = "RUST".to_string();
    let s5: String = "rust".into();
    let s6 = "学习rust".repeat(2);

    let s7 = String::from_utf8(vec![b'h', b'i']).unwrap();
    println!("s7 = {}", s7); // hi

    // 2. 长度
    let len: usize = s6.len(); // 字节数
    let char_count: usize = s6.chars().count();
    let is_empty = s7.is_empty();

    println!("s6 len({}), chars({}), is empty: {}", len, char_count, is_empty); // s6 len(20), chars(12), is empty: false

    // 3. 包含、查找
    let has_u: bool = s5.contains("u");
    let starts: bool = s5.starts_with("ru");
    let ends: bool = s5.ends_with("st");

    let find_llo: Option<usize> = s3.find("llo"); // Some(2)
    let find_l: Option<usize> = s3.rfind("l"); // Some(3)
    println!("{}, {}, {}, {:?}, {:?}", has_u, starts, ends, find_llo, find_l);  // true, true, true, Some(2), Some(3)

    // 4. 比较
    let eq_ignore_case = s4.eq_ignore_ascii_case("rust");
    println!("{} = {} : {}", s4, "rust", eq_ignore_case); // RUST = rust : true

    // 5. 修改
    let mut s = String::from("hello");
    s.push(',');  // push char
    s.push_str("Rust");
    s.extend("字符串!".chars());

    s.insert(5, ',');
    s.insert_str(6, "world");

    s.replace_range(0..2, "HEL");
    let mut sp: String = s.replace("R", "r");
    let right_char: Option<char> = sp.pop();
    let src: char = s.remove(7);

    sp.truncate(6);
    println!("s: {s}\nsp: {sp}\nright_char:{right_char:?}, s remove char: {src}");
    sp.retain(|c| c!='H');
    println!("sp :{}", sp);
    // s: HELllo,orld,Rust字符串!
    // sp: HELllo
    // right_char:Some('!'), s remove char: w
    // sp :ELllo

    let mut s8 = "  rust!!  ".to_string();
    let trimed: &str = s8.trim();
    let left_trimed: &str = s8.trim_start();
    let right_trimed: &str = s8.trim_end();
    let trimmed_matches: &str = s8.trim_matches(|c| c == '!' || c == ' ');
    println!("trimed:{}, left_trimed:{}, right_trimed: {}, trimed_matched: {}", trimed, left_trimed, right_trimed, trimmed_matches);
    // trimed:rust!!, left_trimed:rust!!  , right_trimed:   rust!!, trimed_matched: rust













}
posted @ 2025-12-12 17:32  店里最会撒谎白玉汤  阅读(1)  评论(0)    收藏  举报