Menu
Coddy logo textTech

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.

challenge icon

Desafío

Fácil

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

  1. Un segmento de cadena s: &str. Es un número escrito como texto (por ejemplo, "123.67"). Solo se usa cuando to_string es false.
  2. Un número de punto flotante n: f64: un número de coma flotante. Solo se usa 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 en 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, si n = -321.198623, su forma de cadena es "-321.198623", que tiene 9 caracteres de dígitos (sin contar - y .).

    Pista: convierte n en una cadena, después 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(), después conviértela a i32 (lo que elimina la parte decimal). Imprime con 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 usa la cadena s e ignora n.
  2. Segundo, con to_string establecido en true. Esto usa el número n e ignora s.

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
    
}
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 Fundamentos

Practica por tu cuenta: Compilador de Rust online