Rust 字符串

Rust 中的字符串是 UTF-8 编码的 Unicode 字符序列。例如,"Rust Programming" 是一个字符串,其中每个字符都是有效的 Unicode 字符。即 "R""u""s""t"" " 等等。

在 Rust 中创建字符串

我们可以使用 String::from() 方法创建一个带有默认值的字符串。例如,

// create a string with a default value
let word = String::from("Hello, World!");

在这里,我们创建了一个新字符串并将其赋给 word 变量。我们还提供了默认值 "Hello, World!"

注意:字符串在堆内存中分配,并且大小是动态可变的(可调整大小)。因此,字符串的大小在编译时是未知的。


示例:在 Rust 中创建字符串

fn main() {
    // string creation using String::from() method
let word = String::from("Hello, World!");
println!("word = {}", word); }

输出

word = Hello, World!

Rust 中的可变字符串

我们可以通过在变量前使用 mut 关键字来创建 Rust 中的可变字符串。例如,

// mutable string
let mut word = String::from("cat");

我们可以修改这个字符串。

我们来看一个例子:

fn main() {
let mut word = String::from("cat");
println!("original string = {}", word);
// push a new string at the end of the initial string word.push_str(" dog");
println!("changed string = {}", word); }

输出

original string = cat
changed string = cat dog

在这里,我们创建了一个可变变量 word,它包含字符串 "cat"。然后我们使用 word.push_str(" dog"); 将一个新字符串追加到原始字符串的末尾。


Rust 中的字符串切片

我们可以对 Rust 中的字符串进行切片以引用字符串的一部分。字符串切片允许我们引用字符串的一部分(片段)。例如,

fn main() {
    let word = String::from("Hello, World!");

// slicing a string let slice = &word[0..5];
println!("string = {}", word); println!("slice = {}", slice); }

输出

string = Hello, World!
slice = Hello

这里,&word[0..5] 是对变量 word 中存储的字符串进行切片的表示法,从起始索引 0(包含)到结束索引 5(不包含)。

切片语法中的 &(和号)表示这是一个字符串引用。它不是实际的数据。

切片也用于访问数组和向量中存储的数据部分。要了解 Rust 中的 Slice,请访问 Rust Slice


遍历字符串

我们可以使用字符串类型的 chars() 方法来遍历字符串。例如,

fn main() {
    let str = String::from("Hello");
    
    // Loop through each character in a string using chars() method
for char in str.chars() { println!("{}", char); }
}

输出

H
e
l
l
o

在这里,我们使用 chars() 方法遍历所有字符并打印每个字符。


使用 String::new() 创建空字符串

我们可以使用 String::new() 方法创建一个空字符串。例如,

// create an empty string
let mut word = String::new();

然后我们可以使用 push_str() 方法将一个字符串追加到 word 变量。

word.push_str("Hello, World!");

在这里,我们将字符串 "Hello, World!" 推送到空字符串变量 word


示例:使用 String::new() 创建空字符串

fn main() {
    // create an empty string
    let mut word = String::new();
    
    println!("original string = {}", word);
    
    // append a string to the word variable
    word.push_str("Hello, World!");

    println!("changed string = {}", word);
}

输出

original string = 
changed string = Hello, World!

在这里,我们使用 String::new() 创建一个空字符串,并使用 push_str() 方法将字符串 "Hello, World!" 追加到原始字符串。


常见问题

Rust 中的 String 和 str 有什么区别?

在 Rust 中,我们可以将字符串分为两种类型:Stringstr

字符串

  • 是分配在堆数据结构中的一种数据类型。
  • 具有固定大小,可以修改。

str

  • 是存储在内存中某处的字符串的视图。
  • 也称为字符串切片,只能通过指针 &str 来处理。要了解更多信息,请访问 Rust Slice
Rust 是否支持字符串索引?

根据设计,Rust 不支持字符串索引。如果我们尝试使用索引访问字符,将会收到错误。例如,

fn main() {
    let str = "Hello";

    println!("First letter {}", str[0]); // ERROR!!!
}

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战