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[..]
}