字符串转换
本课属于 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。
挑战
简单创建一个名为 convert_and_print 的函数,它接受三个参数:
- 一个字符串切片
s: &str。它是以文本形式书写的数字(例如"123.67")。只有当to_string为false时才会使用它。 - 一个浮点数
n: f64。只有当to_string为true时才会使用它。 - 一个布尔值
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 两次:
- 第一次,将
to_string设为false。这会使用字符串s,并忽略n。 - 第二次,将
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
}这节课包含一个小测验。开始学习即可作答,并记录你的进度。
基础知识中的所有课
自己练习: Rust 在线编译器