Menu
CoddyTech

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

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

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