字串切片
fn main() {
let english = "Hello, World!";
println!("{}", &english[0..5]); // Prints "Hello"
println!("{}", &english[7..]); // Prints "World!"
}
請注意,我們需要在這裡使用 &
運算子。它需要一個引用,從而為編譯器提供有關切片型別大小的資訊,它需要列印它。沒有引用,兩個 println!
呼叫將是編譯時錯誤。
警告:切片按位元組偏移工作,而不是字元偏移,並且當邊界不在字元邊界時會發生混亂:
fn main() {
let icelandic = "Halló, heimur!"; // note that “ó” is two-byte long in UTF-8
println!("{}", &icelandic[0..6]); // Prints "Halló", “ó” lies on two bytes 5 and 6
println!("{}", &icelandic[8..]); // Prints "heimur!", the `h` is the 8th byte, but the 7th char
println!("{}", &icelandic[0..5]); // Panics!
}
這也是字串不支援簡單索引的原因(例如,icelandic[5]
)。