Menu
CoddyTech

Conversão de Strings

Parte da seção Fundamentos do Journey de Rust da Coddy. Lição 71 de 75.

Para converter um tipo numérico em uma string, você pode usar o método to_string(). Esse método está disponível para a maioria dos tipos de dados, incluindo inteiros e números de ponto flutuante.

Por exemplo:

let number = 42;
let number_str = number.to_string();
println!("The number as a string: {}", number_str);

Neste exemplo, estamos convertendo uma variável i32 number em uma String.

Para converter uma string em um tipo numérico, você pode usar o método parse(). Esse método retorna um resultado que contém o número analisado ou um erro caso a conversão falhe.

Por exemplo:

let number_str = "123";
let number: i32 = number_str.parse().unwrap();
println!("The number as an i32: {}", number);

Neste exemplo, estamos convertendo uma string number_str para um i32 usando o método parse(). O método unwrap() é usado para extrair o valor de Result, supondo que a conversão seja bem-sucedida.

Se a conversão falhar, o programa entrará em pânico (falhará).

Você também pode usar parse() com diferentes tipos numéricos:

let float_str = "3.14";
let float_num: f64 = float_str.parse().unwrap();
println!("The number as an f64: {}", float_num);

Neste caso, estamos convertendo uma string float_str para um f64.

challenge icon

Desafio

Fácil

Crie uma função chamada convert_and_print que receba três argumentos:

  1. Uma fatia de string s: &str. Este é um número escrito como texto (por exemplo, "123.67"). Ela só é usada quando to_string é false.
  2. Um número de ponto flutuante n: f64: um número de ponto flutuante. Ele só é usado quando to_string é true.
  3. Um booleano to_string: bool: determina qual operação realizar.

A função deve realizar as seguintes operações:

  • Se to_string for true: converta n em uma string usando .to_string() e, em seguida, conte quantos caracteres de dígitos ela contém (não conte o ponto . nem o sinal de menos -). Imprima no formato:
    Number: [string], Digits: [num of digits]

    Por exemplo, se n = -321.198623, sua forma em string é "-321.198623", que contém 9 caracteres de dígitos (sem contar - e .).

    Dica: converta n em uma string, use .len() nela e subtraia 1 para cada . ou - que ela contenha.
  • Se to_string for false: analise a string s como um f64 usando .parse() e, em seguida, converta-a para i32 (o que remove a parte decimal). Imprima no formato:
    String as number: [number]

    Por exemplo, se s = "123.67231", a saída será String as number: 123.

Chame convert_and_print duas vezes:

  1. Primeiro, com to_string definido como false. Isso usa a string s e ignora n.
  2. Segundo, com to_string definido como true. Isso usa o número n e ignora s.

Experimente você mesmo

use std::io;

fn convert_and_print(s: &str, n: f64, to_string: bool) {
    // Escreva seu código aqui
}

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();

    // Chame convert_and_print com to_string = false
    
    
    // Chame convert_and_print com to_string = true
    
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Fundamentos

Pratique por conta própria: Compilador de Rust online