Logo
Section 1 / 8

字符串简介

本节课将介绍字符串,两种不同类型的字符串,以及如何在 Rust 中创建它们。

导入

字符串简介

本节课将介绍字符串,两种不同类型的字符串,以及如何在 Rust 中创建它们。

什么是字符串?

字符串是一系列 Unicode 字符的序列。
在 Rust 中,String 不像其他编程语言中的字符串那样以空字符结尾。它们可以包含空字符。

注意:请查看 Unicode 字符列表

Course Image

字符串的类型

字符串分为两种类型:&str 和 String。

字符串字面量(&str)

字符串字面量具有以下特性:

  • 基本类型
  • 不可变
  • 长度固定,存储在内存中的某个位置
  • 字符串的值在编译时就已经确定

注意:字符串字面量也被称为字符串切片。

创建字符串字面量

下图展示了如何创建一个基本的字符串:

...
1fn main() { 2 // 定义一个基本字符串变量 3 let language: &str = "Rust"; 4 // 输出字符串字面量 5 println!("字符串字面量: {}", language); 6 // 输出字符串字面量的长度 7 println!("字符串字面量的长度: {}", language.len()); 8}

字符串对象(String)

字符串对象具有以下特性:

  • 字符串以 UTF-8 编码方式存储
  • 是堆分配的数据结构
  • 字符串的大小可以动态修改
  • 不以空字符结尾
  • 可用于存储运行时才确定的字符串值

创建字符串对象

创建和操作字符串对象有多种方法,这里介绍两种。

创建空字符串对象

此方法使用 .to_string() 方法将空字符串或字符串字面量转换为 String 对象。

下图展示如何创建一个空字符串,并通过 .to_string() 方法将其转换为字符串对象:

...
创建已初始化的字符串对象
  • 此方法通过 from() 方法传入默认值来创建字符串。
Course Image
  • 下图展示如何先创建一个字符串字面量,再将其转换为字符串对象:
Course Image
1fn main() { 2 // 创建一个空字符串 3 let course1 = String::new(); 4 // 将字符串字面量转换为字符串对象 5 let s_course1 = course1.to_string(); 6 // 输出字符串对象 7 println!("这是一个空字符串 {}。", s_course1); 8 // 输出空字符串对象的长度 9 println!("这是我的空字符串的长度 {}。", s_course1.len()); 10 11 // 创建一个字符串字面量 12 let course2 = "Rust Programming"; 13 // 将字符串字面量转换为字符串对象 14 let s_course2 = course2.to_string(); 15 // 输出字符串对象 16 println!("这是一个字符串字面量 : {}。", s_course2); 17 // 输出字符串对象的长度 18 println!("这是我的字符串字面量的长度 {}。", s_course2.len()); 19 20 // 使用 from 方法定义一个字符串对象 21 let course3 = String::from("Rust Language"); 22 // 输出字符串对象 23 println!("这是一个字符串对象 : {}。", course3); 24 // 输出字符串对象的长度 25 println!("这是我的字符串对象的长度 {}。", course3.len()); 26}

注意:len() 是一个内置函数,用于获取字符串字面量和字符串对象的长度。


现在我们已经了解了字符串及其类型,接下来将在下一课中学习字符串对象的核心方法。

Rust 函数

字符串对象的核心方法