Menu
CoddyTech

字符串转换

本课属于 Coddy Rust 学习旅程的“基础知识”单元。第 71 课,共 75 课。

要将数字类型转换为字符串,你可以使用 to_string() 方法。大多数数据类型都支持此方法,包括整数和浮点数。

例如:

let number = 42;
let number_str = number.to_string();
println!("The number as a string: {}", number_str);

在这个例子中,我们将一个 i32 变量 number 转换为 String。

要将字符串转换为数值类型,你可以使用 parse() 方法。此方法会返回一个结果,其中包含解析后的数字;如果转换失败,则包含错误。

例如:

let number_str = "123";
let number: i32 = number_str.parse().unwrap();
println!("The number as an i32: {}", number);

在这个示例中,我们使用 parse() 方法将字符串 number_str 转换为 i32。unwrap() 方法用于从 Result 中提取值,前提是转换成功。

如果转换失败,程序就会发生 panic(失败)。

你还可以将 parse() 与不同的数值类型搭配使用:

let float_str = "3.14";
let float_num: f64 = float_str.parse().unwrap();
println!("The number as an f64: {}", float_num);

在这种情况下,我们要把字符串 float_str 转换为 f64。

challenge icon

挑战

简单

创建一个名为 convert_and_print 的函数,它接受三个参数:

  1. 一个字符串切片 s: &str。它是以文本形式书写的数字(例如 "123.67")。只有当 to_string 为 false 时才会使用它。
  2. 一个浮点数 n: f64。只有当 to_string 为 true 时才会使用它。
  3. 一个布尔值 to_string: bool:用于决定要执行哪种操作。

函数应执行以下操作:

  • 如果 to_string 为 true:使用 .to_string() 将 n 转换为字符串,然后统计其中有多少个数字字符(不要统计点号 . 或减号 -)。按以下格式打印:
    Number: [string], Digits: [num of digits]

    例如,如果 n = -321.198623,它的字符串形式是 "-321.198623",其中有 9 个数字字符(不包括 - 和 .)。

    提示:先将 n 转换为字符串,然后对它使用 .len(),并对其中的每个 . 或 - 减去 1。
  • 如果 to_string 为 false:使用 .parse() 将字符串 s 解析为 f64,然后将其强制转换为 i32(小数部分会被去掉)。按以下格式打印:
    String as number: [number]

    例如,如果 s = "123.67231",输出为 String as number: 123。

调用 convert_and_print 两次:

  1. 第一次,将 to_string 设为 false。这会使用字符串 s,并忽略 n。
  2. 第二次,将 to_string 设为 true。这会使用数字 n,并忽略 s。

亲手试试

use std::io;

fn convert_and_print(s: &str, n: f64, to_string: bool) {
    // 在这里编写你的代码
}

fn main() {
    let mut input_number_str = String::new();
    let mut input_n = String::new();

    io::stdin().read_line(&mut input_number_str).unwrap();
    io::stdin().read_line(&mut input_n).unwrap();

    let n: f64 = input_n.trim().parse().unwrap();
    let number_str = input_number_str.trim();

    // 调用 convert_and_print,并将 to_string = false
    
    
    // 调用 convert_and_print,并将 to_string = true
    
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

基础知识中的所有课

自己练习: Rust 在线编译器