11.Rust-字符串

2022-09-04 11:36:12 浏览数 (1)

Rust 语言提供了两种字符串

  • Rust 核心内置的数据类型&str,字符串字面量 。
  • Rust 标准库中的一个 公开 pub 结构体。字符串对象 String

字面量&str

字符串字面量的核心代码可以在模块 std::str 中找到。Rust 中的字符串字面量被称之为 字符串切片。因为它的底层实现是 切片

代码语言:txt复制
let lesson="Go语言微服务架构核心22讲";

字面量 &str 就是在 编译时 就知道其值的字符串类型,它也是字符的集合,被硬编码赋值给一个变量。

字符串字面量模式是 静态 的,所以,字符串字面量从创建时开始会一直保存到程序结束。

字符串对象

字符串对象并不是 Rust 核心内置的数据类型,它只是标准库中的一个 公开 pub 的结构体。

代码语言:txt复制
pub struct String

字符串对象是使用 UTF-8 作为底层数据编码格式,长度可变的集合

字符串对象在 heap 中分配,可以在运行时提供字符串值以及相应的操作方法。

新建字符串对象

代码语言:txt复制
String::new() //创建一个新的空字符串,它是静态方法。
String::from() //从具体的字符串字面量创建字符串对象。

例子

代码语言:txt复制
let s1 = String::new();
println!("s1:{},s1-len:{}",s1,s1.len());
//输出 s1:,s1-len:0

let s2 = String::from("面向加薪学习");
println!("s2:{},s2-len:{}",s2,s2.len());
//输出 s2:面向加薪学习,s2-len:18

字符串对象常用方法

new()

创建一个新的字符串对象

push_str()方法

再字符串末尾追加字符串。

代码语言:txt复制
 let mut s3 = String::new();
 s3.push_str("Go语言极简一本通");
 println!("{}",s3); //输出 Go语言极简一本通

push()方法

是在原字符上追加字符,而不是返回一个新的字符串

代码语言:txt复制
s3.push('O');
s3.push('K');
println!("{}",s3);//输出 Go语言极简一本通OK

replace()

指定字符串子串替换成另一个字符串

代码语言:txt复制
let s4 = String::from("面向加薪学习");
let result = s4.replace("面向加薪学习","www.go-edu.cn");
println!("{}",result);//输出 www.go-edu.cn

len() 获取长度

返回字符串中的 总字节数。该方法会统计包括 制表符 t空格回车 r换行 n 和回车换行 rn 等等。

代码语言:txt复制
 let s5 = String::from("面向加薪学习 www.go-edu.cnn");
 println!("length is {}",s5.len());//输出 33

to_string()

将字符串转换为字符串对象,方便以后可以有更多的操作。

代码语言:txt复制
let s6 = "从0到Go语言微服务架构师".to_string();
println!("{}",s6);//输出 从0到Go语言微服务架构师

as_str()

返回一个字符串对象的 字符串 字面量。

代码语言:txt复制
fn show_name(name:&str){
    println!("充电科目:{}",name);
}

let s7 = String::from("Go语言微服务架构核心22讲");
show_name(s7.as_str()); //输出 充电科目:Go语言微服务架构核心22讲

trim()

去除字符串头尾的空白符。空白符是指 制表符 t空格回车 r换行 n 和回车换行 rn 等等。

代码语言:txt复制
let s8 = " tGo语言极简一本通tGo语言微服务架构核心22讲 rn从0到Go语言微服务架构师rn     ";
println!("length is {}",s8.len());//输出 length is 103
println!("length is {}",s8.trim().len());//输出 length is 94
println!("s8:{}",s8);
//输出
s8:     Go语言极简一本通        Go语言微服务架构核心22讲
从0到Go语言微服务架构师

split()

将字符串根据某些指定的 字符串子串 分割,返回分割后的字符串子串组成的切片上的迭代器。

代码语言:txt复制
let s9 = "Go语言极简一本通、Go语言微服务架构核心22讲、从0到Go语言微服务架构师";
for item in s9.split('、'){
   println!("充电科目: {}",item);
}
//输出
//充电科目: Go语言极简一本通
//充电科目: Go语言微服务架构核心22讲
//充电科目: 从0到Go语言微服务架构师

chars()

将一个字符串打散为所有字符组成的数组

代码语言:txt复制
let s10 = "从0到Go语言微服务架构师";
for c in s10.chars(){
   println!("字符: {}",c);
}
//输出
字符: 从
字符: 0
字符: 到
字符: G
字符: o
字符: 语
字符: 言
字符: 微
字符: 服
字符: 务
字符: 架
字符: 构
字符: 师

字符串拼接

的内部实现是重写了 add() 方法。

代码语言:txt复制
add(self,&str)->String {
}

返回新的字符串对象。

代码语言:txt复制
let s11="Go语言极简一本通".to_string();
let s12 = " 欢喜".to_string();
let result2=s11   &s12;
println!("{}",result2);
//输出 Go语言极简一本通 欢喜

0 人点赞