Conversión de Strings
Parte de la sección Fundamentos del Journey de Rust de Coddy. Lección 71 de 75.
Para convertir un tipo numérico en una cadena, puedes usar el método to_string(). Este método está disponible para la mayoría de los tipos de datos, incluidos los enteros y los números de coma flotante.
Por ejemplo:
let number = 42;
let number_str = number.to_string();
println!("The number as a string: {}", number_str);En este ejemplo, convertimos una variable i32 number en un String.
Para convertir una cadena en 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, convertimos una cadena number_str a un i32 mediante el método parse(). El método unwrap() se utiliza para extraer el valor de Result, suponiendo que la conversión tiene éxito.
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 en un f64.
Desafío
FácilCrea una función llamada convert_and_print que acepte tres argumentos:
- Un segmento de cadena
s: &str. Es un número escrito como texto (por ejemplo,"123.67"). Solo se usa cuandoto_stringesfalse. - Un número de punto flotante
n: f64: un número de coma flotante. Solo se usa cuandoto_stringestrue. - Un booleano
to_string: bool: determina qué operación realizar.
La función debe realizar las siguientes operaciones:
- Si
to_stringestrue: conviertenen una cadena usando.to_string(), después cuenta cuántos caracteres de dígitos contiene (no cuentes el punto.ni el signo menos-). Imprime con 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.).
Pista: conviertenen una cadena, después usa.len()en ella y resta 1 por cada.o-que contenga. - Si
to_stringesfalse: analiza la cadenascomo unf64usando.parse(), después conviértela ai32(lo que elimina la parte decimal). Imprime con 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 usa la cadenase ignoran. - Segundo, con
to_stringestablecido entrue. Esto usa el númerone ignoras.
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();
// Llama a convert_and_print con to_string = false
// Llama 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 Fundamentos
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ámicaPractica por tu cuenta: Compilador de Rust online