与字符串的转换

RustRustBeginner
立即练习

This tutorial is from open-source community. Access the source code

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本实验中,我们将学习如何在 Rust 中进行字符串的转换。要将任何类型转换为字符串,我们可以为该类型实现 ToString 特性。或者,我们也可以实现 fmt::Display 特性,它会自动提供 ToString 特性,并允许我们使用 println! 打印该类型。另一方面,要将字符串解析为特定类型,比如数字,我们可以使用 parse 函数,并结合类型推断,或者使用 “turbofish” 语法指定类型。这依赖于 FromStr 特性,标准库中的许多类型都实现了该特性。如果我们想将字符串解析为用户定义的类型,可以为该类型实现 FromStr 特性。

注意:如果实验未指定文件名,你可以使用任何你想要的文件名。例如,你可以使用 main.rs,并通过 rustc main.rs &&./main 进行编译和运行。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL rust(("Rust")) -.-> rust/AdvancedTopicsGroup(["Advanced Topics"]) rust(("Rust")) -.-> rust/BasicConceptsGroup(["Basic Concepts"]) rust(("Rust")) -.-> rust/DataTypesGroup(["Data Types"]) rust(("Rust")) -.-> rust/FunctionsandClosuresGroup(["Functions and Closures"]) rust(("Rust")) -.-> rust/DataStructuresandEnumsGroup(["Data Structures and Enums"]) rust/BasicConceptsGroup -.-> rust/variable_declarations("Variable Declarations") rust/DataTypesGroup -.-> rust/integer_types("Integer Types") rust/DataTypesGroup -.-> rust/string_type("String Type") rust/FunctionsandClosuresGroup -.-> rust/function_syntax("Function Syntax") rust/FunctionsandClosuresGroup -.-> rust/expressions_statements("Expressions and Statements") rust/DataStructuresandEnumsGroup -.-> rust/method_syntax("Method Syntax") rust/AdvancedTopicsGroup -.-> rust/traits("Traits") subgraph Lab Skills rust/variable_declarations -.-> lab-99301{{"与字符串的转换"}} rust/integer_types -.-> lab-99301{{"与字符串的转换"}} rust/string_type -.-> lab-99301{{"与字符串的转换"}} rust/function_syntax -.-> lab-99301{{"与字符串的转换"}} rust/expressions_statements -.-> lab-99301{{"与字符串的转换"}} rust/method_syntax -.-> lab-99301{{"与字符串的转换"}} rust/traits -.-> lab-99301{{"与字符串的转换"}} end

与字符串的转换

转换为字符串

将任何类型转换为 String 很简单,只需为该类型实现 ToString 特性。不过,你不应直接这样做,而应实现 fmt::Display 特性,它会自动提供 ToString,并且还允许像在 print! 部分讨论的那样打印该类型。

use std::fmt;

struct Circle {
    radius: i32
}

impl fmt::Display for Circle {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        write!(f, "Circle of radius {}", self.radius)
    }
}

fn main() {
    let circle = Circle { radius: 6 };
    println!("{}", circle.to_string());
}

解析字符串

将字符串转换为数字是比较常见的类型转换之一。惯用的方法是使用 parse 函数,并安排类型推断或使用 “turbofish” 语法指定要解析的类型。以下示例展示了这两种方法。

只要为该类型实现了 FromStr 特性,这将把字符串转换为指定的类型。标准库中的许多类型都实现了该特性。要在用户定义的类型上获得此功能,只需为该类型实现 FromStr 特性。

fn main() {
    let parsed: i32 = "5".parse().unwrap();
    let turbo_parsed = "10".parse::<i32>().unwrap();

    let sum = parsed + turbo_parsed;
    println!("Sum: {:?}", sum);
}

总结

恭喜你!你已经完成了“与字符串的转换”实验。你可以在 LabEx 中练习更多实验来提升你的技能。