Преобразование строк
Часть раздела Fundamentals путешествия по Rust на Coddy — урок 71 из 75.
Чтобы преобразовать числовой тип в строку, вы можете использовать метод to_string(). Этот метод доступен для большинства типов данных, включая целые числа и числа с плавающей запятой.
Например:
let number = 42;
let number_str = number.to_string();
println!("The number as a string: {}", number_str);В этом примере мы преобразуем переменную number типа i32 в String.
Чтобы преобразовать строку в числовой тип, вы можете использовать метод parse(). Этот метод возвращает результат, который содержит либо преобразованное число, либо ошибку, если преобразование не удалось.
Например:
let number_str = "123";
let number: i32 = number_str.parse().unwrap();
println!("The number as an i32: {}", number);В этом примере мы преобразуем строку number_str в i32 с помощью метода parse(). Метод unwrap() используется для извлечения значения из Result, предполагая, что преобразование прошло успешно.
Если преобразование завершится неудачей, программа запаникует (завершится с ошибкой).
Вы также можете использовать 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: преобразуйтеnв строку с помощью.to_string(), затем подсчитайте, сколько цифровых символов она содержит (не считайте точку.или знак минуса-). Выведите результат в формате:Number: [string], Digits: [num of digits]
Например, еслиn = -321.198623, его строковая форма —"-321.198623", которая содержит 9 цифровых символов (не считая-и.).
Подсказка: преобразуйтеnв строку, затем используйте.len()и вычтите 1 за каждый символ.или-, который она содержит. - Если
to_stringимеет значениеfalse: преобразуйте строкуsв типf64с помощью.parse(), затем приведите её к типу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.
Шпаргалка
Чтобы преобразовать числовой тип в строку, используйте метод to_string():
let number = 42;
let number_str = number.to_string();Чтобы преобразовать строку в числовой тип, используйте метод parse():
let number_str = "123";
let number: i32 = number_str.parse().unwrap();Метод parse() работает с различными числовыми типами:
let float_str = "3.14";
let float_num: f64 = float_str.parse().unwrap();Метод unwrap() извлекает значение из Result. Если преобразование не удастся, программа завершится с ошибкой (panic).
Попробуйте сами
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
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Fundamentals
4Операторы. Часть 1
Арифметические операторыОператор остатка от деленияАрифметические сокращенияОператоры сравненияСравнение строк7Основы ввода-вывода
Вывод в консольЧтение ввода пользователяПовторение — До 120Повторение — True или False5Операторы. Часть 2
Логические операторы. Часть 1Логические операторы. Часть 2Повторение — простая логикаЛогические операторы. Часть 38Приложение-калькулятор
Приветственное сообщениеПолучение чисел3Переменные. Часть 2
Объявление типаСоглашения об именованииВывод типовПовторение: инициализация переменныхПриведение типов9Циклы
Цикл For по последовательностиЦикл WhileОператор BreakОператор ContinueВложенные циклыМетки цикловБесконечный циклПовторение — Динамический ввод