LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

Rust 字符串的基本操作

admin
2024年12月28日 7:57 本文熱度 607

Rust 核心語言只有一種字符串類型,那就是字符串切片 str,它的借用形式更常見 &str

String 類型,不屬于核心語言,而是由 Rust 標(biāo)準(zhǔn)庫提供。它是一種長度可變、內(nèi)容可變、擁有所有權(quán)的 UTF-8 編碼字符串類型。

創(chuàng)建新字符串

String 其實(shí)是矢量類型的封裝,矢量類型 Vec<T> 的許多操作在 String 上都能找到。比如,創(chuàng)建空白字符串的 new() 方法。

如果想使用現(xiàn)成的字符串初始化 String,可以使用 to_string() 方法。所有實(shí)現(xiàn) Display 特征的類型都有這個(gè)方法,比如字符串字面量。

還可以使用 String::from() 創(chuàng)建字符串。

因?yàn)樽址?UTF-8,你可以在其中存儲(chǔ)各國語言,甚至包括 emoji。

更新字符串

使用 push_str(string) 向字符串尾部添加新字符串。參數(shù)是字符串切片類型 &str,因此不會(huì)占有參數(shù)的所有權(quán)。

使用 push(ch) 向字符串尾部添加單個(gè)字符:

拼接兩個(gè) String,可以使用加號(hào) +。加號(hào)運(yùn)算符會(huì)調(diào)用 add() 函數(shù),其簽名如下:

fn add(self, s: &str) -> String {...}

因此,使用 + 執(zhí)行完拼接操作,原字符串將失去所有權(quán):

當(dāng)拼接多個(gè)字符串,代碼寫起來很不方便:

此時(shí),使用 format! 宏會(huì)更方便。format! 宏的用法 println! 宏的用法類似,只不過不是向終端打印信息,而是返回 String 類型的值。

format! 宏的可讀性更好,并且它不會(huì)搶奪字符串的所有權(quán),之后可以繼續(xù)使用原來的字符串。

字符串索引

在其他編程語言,訪問字符串索引是個(gè)常見操作。但是,如果你在 Rust 中進(jìn)行此類操作,會(huì)得到一個(gè)錯(cuò)誤:

之所以 Rust 禁止對(duì)字符串進(jìn)行索引操作,是因?yàn)?UTF-8 是一種變長編碼方案,有的字符使用 1 個(gè)字節(jié)表示,有的字符則需要 2 個(gè)字節(jié)甚至更多。因此,索引位置和字符并非一一對(duì)應(yīng)。

為了避免含糊不清,防止可能帶來的問題,Rust 干脆禁止在字符串上使用索引值。

Rust 禁用字符串的另一個(gè)原因時(shí),索引操作的時(shí)間復(fù)雜度應(yīng)當(dāng)是常量時(shí)間O(1)。但這在 UTF-8 中難以實(shí)現(xiàn),因?yàn)槊看嗡夹枰獜念^開始遍歷,才能發(fā)現(xiàn)當(dāng)前位置屬于哪個(gè)字符。

字符串切片

如果你確實(shí)想截取字符串的一部分,必須要更明確的告知 Rust 編譯器,你期望截取的數(shù)據(jù)類型,是字節(jié)、字符、還是圖元簇?

比如,你可以使用區(qū)間語法 [a..b] 截取特定范圍內(nèi)的字節(jié)序列。

如果你截取的字節(jié)序列不是一個(gè)完整的 UTF-8 編碼,Rust 會(huì) panic 退出。使用字符串切片務(wù)必小心。

遍歷字符串

使用 for 循環(huán)字符串時(shí),務(wù)必明確你的遍歷元素類型。

使用 chars() 返回一個(gè)遍歷字符的迭代器。

如果想遍歷字符串的所有字節(jié),使用 bytes() 方法:

如果你要遍歷圖元簇,Rust 標(biāo)準(zhǔn)庫不提供這種功能,需要去 crates.io 自行解決。

相關(guān)閱讀

  1. 一文讀懂字符編碼

  2. Rust 的矢量:可變長的數(shù)組

  3. Rust 的切片類型


參考資料

Storing UTF-8 Encoding Text with Strings

https://doc.rust-lang.org/stable/book/ch08-02-strings.html


該文章在 2024/12/28 11:54:43 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲(chǔ)管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
欧美香蕉免费在线视频观看 | 日韩在线精品特黄 | 亚洲国产人在线播放首页 | 欧美一区二区三区精品日韩 | 亚洲第一人成网站在线播放 | 中文字幕一区二区三区日韩 |