前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >11.Rust-字符串

11.Rust-字符串

原创
作者头像
面向加薪学习
修改2022-09-04 11:36:12
4700
修改2022-09-04 11:36:12
举报
文章被收录于专栏:面向加薪学习

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 和回车换行 \r\n 等等。

代码语言:txt
复制
 let s5 = String::from("面向加薪学习 www.go-edu.cn\n");
 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 和回车换行 \r\n 等等。

代码语言:txt
复制
let s8 = " \tGo语言极简一本通\tGo语言微服务架构核心22讲 \r\n从0到Go语言微服务架构师\r\n     ";
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语言极简一本通 欢喜

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 字面量&str
  • 字符串对象
  • 新建字符串对象
  • 字符串对象常用方法
    • new()
      • push_str()方法
        • push()方法
          • replace()
            • len() 获取长度
              • to_string()
                • as_str()
                  • trim()
                    • split()
                      • chars()
                        • 字符串拼接 +
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档