python怎么做專門的手機(jī)網(wǎng)站百度免費(fèi)網(wǎng)站制作
rust復(fù)合類型
字符串
由于rust的字符串元素類型是u8
(1字節(jié)),但是字符類型是unicode(4字節(jié))
- 索引不能像C++那樣讀取
- 又由于String類型和&str類型都是utf-8編碼,中文占3字節(jié)
- 切片可能會(huì)導(dǎo)致崩潰
slice(切片)
切片就是對(duì)String
類型中的一部分的引用,它不會(huì)擁有自己的內(nèi)存空間。
- 這個(gè)就是C++中的string_view
- 類型標(biāo)識(shí)
&str
- 由于編碼問題對(duì)于漢字切片可能導(dǎo)致崩潰,所以可以用
utf8_slice
庫
創(chuàng)建slice
let s = String::from("hello");
let hello = &s[0..5]; // 從索引0開始,到索引4結(jié)束
let hello = &s[0..4]; // 從索引0開始,到索引4結(jié)束
let hello = &s[..4] // 從索引0開始,到索引4結(jié)束
let hello = &s[..]; // 從索引0開始,到字符串最后一個(gè)字符結(jié)束
let hello = &s[1..] // 從索引1開始,到字符串最后一個(gè)字符結(jié)束
&[begin, end],實(shí)際上取得索引左閉右開的區(qū)間[begin, end)
insert
使用insert
插入單個(gè)字符
insert_str
插入字符串字面量
push
push方法只能在String類型上調(diào)用,不能在&str上調(diào)用。
push()
向字符串尾部追加字符push_str()
字符串字面值。
replace
replace
替換字符串中的一個(gè)子串
返回的是一個(gè)新的字符串,不會(huì)修改原來的字符串
replace()
let mut s = String::from("hello world");
let new_s = s.replace('o', '0'); // 替換所有的o為0
replacen()
多一個(gè)參數(shù):代表要替換的個(gè)數(shù)
let mut s = String::from("hello world");
let new_s = s.replacen('o', '0', 1); // 替換第一個(gè)o為0
replcae_range()
第一個(gè)參數(shù)代表要替換的范圍,第二個(gè)參數(shù)是替換成什么。
let mut s = String::from("hello world");
let new_s = s.replace_range(0..5, "hi"); // 替換從索引0開始,到索引4結(jié)束的字符串為"hi"
delete
pop
刪除并返回字符串的唯一一個(gè)字符,若字符串為空,則返回None
let mut s = String::from("hello");
let ch = s.pop(); // 刪除并返回最后一個(gè)字符
remove
刪除指定索引的字符,并返回被刪除的字符。
let mut s = String::from("hello world");
let ch = s.remove(0); // 刪除并返回第一個(gè)字符
truncate
刪除從指定位置開始到結(jié)尾的全部字符,無返回值
clear
清空
concatenate
+,+=
使用 +
或者 +=
連接兩個(gè)字符串。
要求右邊使用是切片引用類型,(本質(zhì)調(diào)用底層 add())
format!
let s1 = String::from("tic");
let s2 = String::from("tac");
let s = format!("{}{}", s1, s2); // 連接字符串
元組
- 元組類型由各個(gè)元素的類型構(gòu)成,用圓括號(hào)
()
表示。 - 元組長(zhǎng)度固定
- 順序也固定