Menu
Coddy logo textTech

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