Rust字符串切片

字符串切片:指向String对象某个连续部分的引用。

使用形式:[starting_index..ending_index],其中 starting_index 是切片起始位置的索引值,ending_index 是切片终止位置的下一个位置的索引值。

示例程序:

fn main() {
    let s = String::from("yuyoubei");

    println!("{}", &s[0..3]);   // 输出 yuy
    println!("{}", &s[..5]);    // 输出 yuyou
    println!("{}", &s[2..]);    // 输出 youbei
    println!("{}", &s[..]);     // 输出 yuyoubei
}

切片的类型为 &str

返回字符串中的第一个单词(即第一个空格字符前的字符串切片):

fn main() {
    let s = String::from("yuyoubei why are you always sad?");

    println!("{}", first_words(&s));    // 输出 yuyoubei
}

fn first_words(s: &String) -> &str {
    let bytes = s.as_bytes();
    
    for (i, &item) in bytes.iter().enumerate() {
        if item == b' ' {
            return &s[..i];
        }
    }
    &s[..]
}

字符串字面量就是切片。

比如:

let s = "yuyoubei";

中 s 的类型就是 &str

将字符串字面量作为参数

示例程序:

fn main() {
    let s = "yuyoubei are you missing someone now?";

    println!("{}", first_words(&s));   // 输出 yuyoubei
}

fn first_words(s: &str) -> &str {
    let bytes = s.as_bytes();

    for (i, &item) in bytes.iter().enumerate() {
        if item == b' ' {
            return &s[..i];
        }
    }

    &s[..]
}
posted @ 2022-01-29 12:56  鱼又悲  阅读(314)  评论(0编辑  收藏  举报