Преобразование строк
Часть раздела Основы путешествия по Rust на Coddy. Урок 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);В этом примере мы преобразуем строку 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игнорируется.
Попробуйте сами
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
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Операторы. Часть 1
Арифметические операторыОператор остатка от деленияАрифметические сокращенияОператоры сравненияСравнение строк7Основы ввода-вывода
Вывод в консольЧтение ввода пользователяПовторение — До 120Повторение — True или False5Операторы. Часть 2
Логические операторы. Часть 1Логические операторы. Часть 2Повторение — простая логикаЛогические операторы. Часть 38Приложение-калькулятор
Приветственное сообщениеПолучение чисел3Переменные. Часть 2
Объявление типаСоглашения об именованииВывод типовПовторение: инициализация переменныхПриведение типов9Циклы
Цикл For по последовательностиЦикл WhileОператор BreakОператор ContinueВложенные циклыМетки цикловБесконечный циклПовторение — Динамический вводПотренируйтесь самостоятельно: Онлайн-компилятор Rust