当前位置:首页 > 科技  > 软件

Rust字符串,让文本处理更简单

来源: 责编: 时间:2024-04-12 17:31:09 255观看
导读大家好!今天我们来聊聊Rust里面的字符串。字符串在编程中超级常见,不就是一堆字符嘛。但是在Rust里,字符串的处理方式有点特别,而且很有意思哦。字符串字面量首先,我们来聊聊字符串字面量。这玩意儿在编译时就已经知道值了

大家好!今天我们来聊聊Rust里面的字符串。字符串在编程中超级常见,不就是一堆字符嘛。但是在Rust里,字符串的处理方式有点特别,而且很有意思哦。UZZ28资讯网——每日最新资讯28at.com

字符串字面量

首先,我们来聊聊字符串字面量。这玩意儿在编译时就已经知道值了,就像是硬编码到变量里的一样。字符串字面量是&str类型,它是Rust标准库的一部分。你可以想象它就像是字符串的一个小切片。UZZ28资讯网——每日最新资讯28at.com

fn main() {   let company: &str = "Science Note";   let location: &str = "China";   println!("company is : {} location :{}", company, location);}

输出就是company is : Science Note location :China。UZZ28资讯网——每日最新资讯28at.com

字符串对象

接下来是字符串对象String。这个东东在标准库里面定义的,不像字符串字面量那样是核心语言的一部分。String是一个可变、可扩展的UTF-8编码的字符串。你可以用它来表示运行时提供的字符串值,它会被分配在堆上。UZZ28资讯网——每日最新资讯28at.com

创建字符串对象

创建字符串对象有几种方法:UZZ28资讯网——每日最新资讯28at.com

// 创建一个空字符串let empty_string = String::new();// 从字符串字面量创建一个字符串对象let content_string = String::from("ScienceNote");

字符串对象的常用方法

Rust的String对象有很多好用的方法,比如:UZZ28资讯网——每日最新资讯28at.com

  • new():创建一个新的空字符串。
  • to_string():把一个值转换成字符串。
  • replace():替换字符串中的模式。
  • as_str():提取一个包含整个字符串的字符串切片。
  • push():在字符串末尾追加一个字符。
  • push_str():在字符串末尾追加一个字符串切片。
  • len():返回字符串的长度,以字节为单位。
  • trim():去除字符串前后的空白字符。
  • split_whitespace():通过空白字符分割字符串,并返回一个迭代器。
  • split():通过指定的模式分割字符串,并返回一个迭代器。

字符串对象的示例

来看看这些方法是怎么用的:UZZ28资讯网——每日最新资讯28at.com

// 使用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中,你可以用+操作符来拼接两个字符串。这个过程叫做串联或者插值。串联的结果是一个全新的字符串对象。UZZ28资讯网——每日最新资讯28at.com

fn main() {   let n1 = "Science".to_string();   let n2 = "Note".to_string();   let n3 = n1 + &n2; // 传递n2的引用   println!("{} ", n3);}

输出就是ScienceNote。UZZ28资讯网——每日最新资讯28at.com

类型转换

Rust还允许你把数字转换成字符串对象:UZZ28资讯网——每日最新资讯28at.com

fn main() {   let number = 2020;   let number_as_string = number.to_string();   println!("{} ", number_as_string);   println!("{} ", number_as_string == "2020");}

格式化字符串

还有一个叫做format!的宏函数,可以用来把字符串对象拼接在一起:UZZ28资讯网——每日最新资讯28at.com

fn main() {   let n1 = "Science".to_string();   let n2 = "Note".to_string();   let n3 = format!("{} {}", n1, n2);   println!("{} ", n3);}

输出就是Science Note。UZZ28资讯网——每日最新资讯28at.com

好啦,这就是Rust中字符串的一些小知识。Rust的字符串处理既安全又灵活,而且默认的不可变性也有助于保证代码的健壮性。希望这个小介绍能让你对Rust中的字符串有个初步的了解。如果你对某个概念感兴趣,或者想要深入了解更多,记得告诉我哦!我们下次见!UZZ28资讯网——每日最新资讯28at.com


UZZ28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-83279-0.htmlRust字符串,让文本处理更简单

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 前端神器AbortController:深度解析与实战应用

下一篇: C# 中优雅的动态序列化接口返回数据

标签:
  • 热门焦点
  • 直屏旗舰来了 iQOO 12和K70 Pro同台竞技

    旗舰机基本上使用的都是双曲面屏幕,这就让很多喜欢直屏的爱好者在苦等一款直屏旗舰,这次,你们等到了。据博主数码闲聊站带来的最新爆料称,Redmi下代旗舰K70 Pro和iQOO 12两款手
  • 7月安卓手机性能榜:红魔8S Pro再夺榜首

    7月份的手机市场风平浪静,除了红魔和努比亚带来了两款搭载骁龙8Gen2领先版处理器的新机之外,别的也想不到有什么新品了,这也正常,通常6月7月都是手机厂商修整的时间,进入8月份之
  • 5月iOS设备性能榜:M1 M2依旧是榜单前五

    和上个月一样,没有新品发布的iOS设备性能榜的上榜设备并没有什么更替,仅仅只有跑分变化而产生的排名变动,刚刚开始的苹果WWDC2023,推出的产品也依旧是新款Mac Pro、新款Mac Stu
  • 微信语音大揭秘:为什么禁止转发?

    大家好,我是你们的小米。今天,我要和大家聊一个有趣的话题:为什么微信语音不可以转发?这是一个我们经常在日常使用中遇到的问题,也是一个让很多人好奇的问题。让我们一起来揭开这
  • 拼多多APP上线本地生活入口,群雄逐鹿万亿市场

    Tech星球(微信ID:tech618)文 | 陈桥辉 Tech星球独家获悉,拼多多在其APP内上线了&ldquo;本地生活&rdquo;入口,位置较深,位于首页的&ldquo;充值中心&rdquo;内,目前主要售卖美食相关的
  • 自律,给不了Keep自由!

    来源 | 互联网品牌官作者 | 李大为编排 | 又耳 审核 | 谷晓辉自律能不能给用户自由暂时不好说,但大概率不能给Keep自由。近日,全球最大的在线健身平台Keep正式登陆港交所,努力
  • 冯提莫签约抖音公会 前“斗鱼一姐”消失在直播间

    来源:直播观察提起&ldquo;冯提莫&rdquo;这个名字,很多网友或许听过,但应该不记得她是哪位主播了。其实,作为曾经的&ldquo;斗鱼一姐&rdquo;,冯提莫在游戏直播的年代影响力不输于现
  • DRAM存储器10月价格下跌,NAND闪存本月价格与上月持平

    10月30日,据韩国媒体消息,自今年年初以来一直在上涨的 DRAM 存储器的交易价格仅在本月就下跌了近 10%,此次是全年首次降价,而NAND 闪存本月价格与上月持平。市
  • 微软发布Windows 11新版 引入全新任务栏状态

    近日,微软发布了Windows 11新版,而Build 22563更新主要引入了几周前曝光的平板模式任务栏等,系统更流畅了。更新中,Windows 11加入了专门针对平板优化的任务栏
Top