rust(54)-字符串
生活随笔
收集整理的這篇文章主要介紹了
rust(54)-字符串
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Rust有兩種類型的字符串:String 和&str。
String 存儲為字節向量(Vec),但保證始終是有效的UTF-8序列。字符串是堆分配的,可增長的,不以空null 結束。
&str是一個切片(&[u8]),它總是指向一個有效的UTF-8序列,并且可以用來查看String,就像&[T]是Vec的一個視圖一樣。
有多種方法可以編寫包含特殊字符的字符串字面值。所有的結果都是一個相似的&str,所以最好使用最方便書寫的表單。類似地,也有多種方法來編寫字節字符串,它們都是&[u8;N]。
通常特殊字符用反斜杠字符進行轉義:\。通過這種方式,您可以將任何字符添加到您的字符串中,甚至是不可打印的字符和您不知道如何鍵入的字符。如果你想要一個文字反斜杠,用另一個轉義:\
字符串或字符文字分隔符出現在文字中必須轉義:""",’\ "。
有時需要轉義的字符太多了,或者按原樣寫出字符串會更方便。這就是原始字符串文字發揮作用的地方。
fn main() {let raw_str = r"Escapes don't work here: \x3F \u{211D}";println!("{}", raw_str);// If you need quotes in a raw string, add a pair of #slet quotes = r#"And then I said: "There is no escape!""#;println!("{}", quotes);// If you need "# in your string, just use more #s in the delimiter.// There is no limit for the number of #s you can use.let longer_delimiter = r###"A string with "# in it. And even "##!"###;println!("{}", longer_delimiter); }想要一個非UTF-8的字符串嗎?(記住,str和String必須是有效的UTF-8)。或者您想要一個字節數組,其中大部分是文本? yte strings字節字符串來拯救!
use std::str;fn main() {// Note that this is not actually a `&str`let bytestring: &[u8; 21] = b"this is a byte string";// Byte arrays don't have the `Display` trait, so printing them is a bit limitedprintln!("A byte string: {:?}", bytestring);// Byte strings can have byte escapes...let escaped = b"\x52\x75\x73\x74 as bytes";// ...but no unicode escapes// let escaped = b"\u{211D} is not allowed";println!("Some escaped bytes: {:?}", escaped);// Raw byte strings work just like raw stringslet raw_bytestring = br"\u{211D} is not escaped here";println!("{:?}", raw_bytestring);// Converting a byte array to `str` can failif let Ok(my_str) = str::from_utf8(raw_bytestring) {println!("And the same as text: '{}'", my_str);}let _quotes = br#"You can also use "fancier" formatting, \like with normal raw strings"#;// Byte strings don't have to be UTF-8let shift_jis = b"\x82\xe6\x82\xa8\x82\xb1\x82"; // "ようこそ" in SHIFT-JIS// But then they can't always be converted to `str`match str::from_utf8(shift_jis) {Ok(my_str) => println!("Conversion successful: '{}'", my_str),Err(e) => println!("Conversion failed: {:?}", e),}; }總結
以上是生活随笔為你收集整理的rust(54)-字符串的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: rust(53)-智能指针
- 下一篇: SSM框架中mapper和mapping