Menu
Coddy logo textTech

Преобразование строк

Часть раздела Основы путешествия по 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.

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: преобразуйте 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 дважды:

  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