大家好!今天我們來聊聊Rust里面的字符串。字符串在編程中超級常見,不就是一堆字符嘛。但是在Rust里,字符串的處理方式有點特別,而且很有意思哦。
首先,我們來聊聊字符串字面量。這玩意兒在編譯時就已經知道值了,就像是硬編碼到變量里的一樣。字符串字面量是&str類型,它是Rust標準庫的一部分。你可以想象它就像是字符串的一個小切片。
fn main() { let company: &str = "Science Note"; let location: &str = "China"; println!("company is : {} location :{}", company, location);}
輸出就是company is : Science Note location :China。
接下來是字符串對象String。這個東東在標準庫里面定義的,不像字符串字面量那樣是核心語言的一部分。String是一個可變、可擴展的UTF-8編碼的字符串。你可以用它來表示運行時提供的字符串值,它會被分配在堆上。
創建字符串對象有幾種方法:
// 創建一個空字符串let empty_string = String::new();// 從字符串字面量創建一個字符串對象let content_string = String::from("ScienceNote");
Rust的String對象有很多好用的方法,比如:
來看看這些方法是怎么用的:
// 使用new()方法創建一個空字符串對象,并設置值fn main() { let mut z = String::new(); z.push_str("hello"); println!("{}", z);}// 使用to_string()方法將字符串字面量轉換為字符串對象fn main() { let name1 = "Hello ScienceNote , Hello!".to_string(); println!("{}", name1);}// 使用replace()方法替換字符串中的模式fn main() { let name1 = "Hello ScienceNote , Hello!".to_string(); // 找到并替換所有的"Hello" let name2 = name1.replace("Hello", "Howdy"); println!("{}", name2);}// 使用as_str()方法提取字符串切片fn main() { let example_string = String::from("example_string"); print_literal(example_string.as_str());}fn print_literal(data: &str) { println!("displaying string literal {}", data);}// 使用push()方法在字符串末尾追加字符fn main() { let mut company = "Tutorial".to_string(); company.push('s'); println!("{}", company);}// 使用push_str()方法在字符串末尾追加字符串切片fn main() { let mut company = "Science".to_string(); company.push_str(" Note"); println!("{}", company);}// 使用len()方法獲取字符串的長度fn main() { let fullname = " Science Note"; println!("length is {}", fullname.len());}// 使用trim()方法去除字符串前后的空白字符fn main() { let fullname = " Science Note /r/n"; println!("Before trim"); println!("length is {}", fullname.len()); println!(); println!("After trim"); println!("length is {}", fullname.trim().len());}// 使用split_whitespace()方法通過空白字符分割字符串fn main() { let msg = "Science Note has good t utorials".to_string(); let mut i = 1; for token in msg.split_whitespace() { println!("token {} {}", i, token); i += 1; }}// 使用split()方法通過指定的模式分割字符串fn main() { let fullname = "Kannan,Sudhakaran,ScienceNote"; for token in fullname.split(",") { println!("token is {}", token); } // 存儲分割結果到一個Vector中 let tokens: Vec<&str> = fullname.split(",").collect(); println!("firstName is {}", tokens[0]); println!("lastname is {}", tokens[1]); println!("company is {}", tokens[2]);}// 使用chars()方法訪問字符串中的單個字符fn main() { let n1 = "Science".to_string(); for n in n1.chars() { println!("{} ", n); }}
在Rust中,你可以用+操作符來拼接兩個字符串。這個過程叫做串聯或者插值。串聯的結果是一個全新的字符串對象。
fn main() { let n1 = "Science".to_string(); let n2 = "Note".to_string(); let n3 = n1 + &n2; // 傳遞n2的引用 println!("{} ", n3);}
輸出就是ScienceNote。
Rust還允許你把數字轉換成字符串對象:
fn main() { let number = 2020; let number_as_string = number.to_string(); println!("{} ", number_as_string); println!("{} ", number_as_string == "2020");}
還有一個叫做format!的宏函數,可以用來把字符串對象拼接在一起:
fn main() { let n1 = "Science".to_string(); let n2 = "Note".to_string(); let n3 = format!("{} {}", n1, n2); println!("{} ", n3);}
輸出就是Science Note。
好啦,這就是Rust中字符串的一些小知識。Rust的字符串處理既安全又靈活,而且默認的不可變性也有助于保證代碼的健壯性。希望這個小介紹能讓你對Rust中的字符串有個初步的了解。如果你對某個概念感興趣,或者想要深入了解更多,記得告訴我哦!我們下次見!
本文鏈接:http://www.tebozhan.com/showinfo-26-83279-0.htmlRust字符串,讓文本處理更簡單
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com
上一篇: 前端神器AbortController:深度解析與實戰應用
下一篇: C# 中優雅的動態序列化接口返回數據