Menu
Coddy logo textTech

Conversão de Strings

Parte da seção Fundamentals 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(). Este método está disponível para a maioria dos tipos de dados, incluindo números inteiros e 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 chamada number para uma String.

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

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 do Result, assumindo 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 recebe três argumentos:

  1. Um slice de string s: &str — este é um número escrito como texto (ex: "123.67"). Ele só é usado quando to_string é false.
  2. Um float 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 para uma string usando .to_string(), então conte quantos caracteres de dígitos ela contém (não conte o ponto . ou 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 possui 9 caracteres de dígitos (sem contar - e .).

    Dica: converta n para uma string, use .len() nela e subtraia 1 para cada . ou - que ela contiver.
  • Se to_string for false: faça o parse da string s como um f64 usando .parse(), então converta-o para i32 (o que descarta a parte decimal). Imprima no formato:
    String as number: [number]

    Por exemplo, se s = "123.67231", a saída é 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.

Folha de consulta

Para converter um tipo numérico em uma string, use o método to_string():

let number = 42;
let number_str = number.to_string();

Para converter uma string em um tipo numérico, use o método parse():

let number_str = "123";
let number: i32 = number_str.parse().unwrap();

O método parse() funciona com diferentes tipos numéricos:

let float_str = "3.14";
let float_num: f64 = float_str.parse().unwrap();

O método unwrap() extrai o valor do Result. Se a conversão falhar, o programa entrará em pânico.

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 Fundamentals