Conversión de Strings
Parte de la sección Fundamentals del Journey de Rust de Coddy — lección 71 de 75.
Para convertir un tipo numérico a una cadena, puedes usar el método to_string(). Este método está disponible para la mayoría de los tipos de datos, incluyendo enteros y números de punto flotante.
Por ejemplo:
let number = 42;
let number_str = number.to_string();
println!("The number as a string: {}", number_str);En este ejemplo, estamos convirtiendo una variable i32 llamada number a un String.
Para convertir una cadena a un tipo numérico, puedes usar el método parse(). Este método devuelve un resultado que contiene el número analizado o un error si la conversión falla.
Por ejemplo:
let number_str = "123";
let number: i32 = number_str.parse().unwrap();
println!("The number as an i32: {}", number);En este ejemplo, estamos convirtiendo una cadena number_str a un i32 usando el método parse(). El método unwrap() se utiliza para extraer el valor del Result, asumiendo que la conversión es exitosa.
Si la conversión falla, el programa entrará en pánico (fallará).
También puedes usar parse() con 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);En este caso, estamos convirtiendo una cadena float_str a un f64.
Desafío
FácilCrea una función llamada convert_and_print que reciba tres argumentos:
- Un slice de cadena
s: &str— este es un número escrito como texto (por ejemplo,"123.67"). Solo se utiliza cuandoto_stringesfalse. - Un flotante
n: f64— un número de punto flotante. Solo se utiliza cuandoto_stringestrue. - Un booleano
to_string: bool— determina qué operación realizar.
La función debe realizar las siguientes operaciones:
- Si
to_stringestrue: conviertena una cadena usando.to_string(), luego cuenta cuántos caracteres de dígitos contiene (no cuentes el punto.ni el signo menos-). Imprime en el formato:Number: [string], Digits: [num of digits]
Por ejemplo, sin = -321.198623, su forma de cadena es"-321.198623", que tiene 9 caracteres de dígitos (sin contar-y.).
Sugerencia: conviertena una cadena, luego usa.len()en ella y resta 1 por cada.o-que contenga. - Si
to_stringesfalse: analiza la cadenascomo unf64usando.parse(), luego conviértela ai32(lo que elimina la parte decimal). Imprime en el formato:String as number: [number]
Por ejemplo, sis = "123.67231", la salida esString as number: 123.
Llama a convert_and_print dos veces:
- Primero, con
to_stringestablecido enfalse— esto utiliza la cadenase ignoran. - Segundo, con
to_stringestablecido entrue— esto utiliza el númerone ignoras.
Hoja de referencia
Para convertir un tipo numérico a una cadena, utiliza el método to_string():
let number = 42;
let number_str = number.to_string();Para convertir una cadena a un tipo numérico, utiliza el método parse():
let number_str = "123";
let number: i32 = number_str.parse().unwrap();El método parse() funciona con diferentes tipos numéricos:
let float_str = "3.14";
let float_num: f64 = float_str.parse().unwrap();El método unwrap() extrae el valor del Result. Si la conversión falla, el programa entrará en pánico (panic).
Pruébalo tú mismo
use std::io;
fn convert_and_print(s: &str, n: f64, to_string: bool) {
// Escribe tu código aquí
}
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();
// Llamar a convert_and_print con to_string = false
// Llamar a convert_and_print con to_string = true
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentals
4Operadores Parte 1
Operadores aritméticosOperador de móduloAtajos aritméticosOperadores de comparaciónComparación de strings5Operadores Parte 2
Operadores lógicos Parte 1Operadores lógicos Parte 2Repaso - Lógica simpleOperadores lógicos Parte 33Variables Parte 2
Declaración de tiposConvenciones de nomenclaturaInferencia de tiposResumen - Inicializar variablesConversión de tipos9Bucles
For sobre seriesBucle WhileBreakContinueBucle anidadoEtiquetas de bucleBucle infinitoResumen - Entrada dinámica