Menu
Coddy logo textTech

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.

challenge icon

Desafío

Fácil

Crea una función llamada convert_and_print que reciba tres argumentos:

  1. Un slice de cadena s: &str — este es un número escrito como texto (por ejemplo, "123.67"). Solo se utiliza cuando to_string es false.
  2. Un flotante n: f64 — un número de punto flotante. Solo se utiliza cuando to_string es true.
  3. Un booleano to_string: bool — determina qué operación realizar.

La función debe realizar las siguientes operaciones:

  • Si to_string es true: convierte n a 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, si n = -321.198623, su forma de cadena es "-321.198623", que tiene 9 caracteres de dígitos (sin contar - y .).

    Sugerencia: convierte n a una cadena, luego usa .len() en ella y resta 1 por cada . o - que contenga.
  • Si to_string es false: analiza la cadena s como un f64 usando .parse(), luego conviértela a i32 (lo que elimina la parte decimal). Imprime en el formato:
    String as number: [number]

    Por ejemplo, si s = "123.67231", la salida es String as number: 123.

Llama a convert_and_print dos veces:

  1. Primero, con to_string establecido en false — esto utiliza la cadena s e ignora n.
  2. Segundo, con to_string establecido en true — esto utiliza el número n e ignora s.

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
    
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentals