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.
Desafio
FácilCrie uma função chamada convert_and_print que recebe três argumentos:
- Um slice de string
s: &str— este é um número escrito como texto (ex:"123.67"). Ele só é usado quandoto_stringéfalse. - Um float
n: f64— um número de ponto flutuante. Ele só é usado quandoto_stringétrue. - Um booleano
to_string: bool— determina qual operação realizar.
A função deve realizar as seguintes operações:
- Se
to_stringfortrue: convertanpara 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, sen = -321.198623, sua forma em string é"-321.198623", que possui 9 caracteres de dígitos (sem contar-e.).
Dica: convertanpara uma string, use.len()nela e subtraia 1 para cada.ou-que ela contiver. - Se
to_stringforfalse: faça o parse da stringscomo umf64usando.parse(), então converta-o parai32(o que descarta a parte decimal). Imprima no formato:String as number: [number]
Por exemplo, ses = "123.67231", a saída éString as number: 123.
Chame convert_and_print duas vezes:
- Primeiro, com
to_stringdefinido comofalse— isso usa a stringse ignoran. - Segundo, com
to_stringdefinido comotrue— isso usa o númerone ignoras.
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
}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
4Operadores Parte 1
Operadores AritméticosOperador de MóduloAtalhos AritméticosOperadores de ComparaçãoComparação de Strings7Entrada e Saída Básica
Exibindo no ConsoleLendo a Entrada do UsuárioRevisão - Até 120Revisão - Verdadeiro ou Falso5Operadores Parte 2
Operadores Lógicos Parte 1Operadores Lógicos Parte 2Recapitulação - Lógica SimplesOperadores Lógicos Parte 33Variáveis Parte 2
Declaração de TipoConvenções de NomenclaturaInferência de TipoRecapitulação - Inicializar VariáveisConversão de Tipo9Laços
For sobre SériesLaço WhileBreakContinueLaços AninhadosRótulos de LoopLoop InfinitoRecapitulação - Entrada Dinâmica