Menu
CoddyTech

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 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 en una 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 usa para extraer el valor de Result, suponiendo que la conversión se realiza correctamente.

Si la conversión falla, el programa entrará en pánico (fallará).

También puedes usar parse() con distintos 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 tome tres argumentos:

  1. Un segmento de cadena s: &str. Es un número escrito como texto (p. ej., "123.67"). Solo se usa cuando to_string es false.
  2. Un número de punto flotante n: f64: un número de punto 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() y luego cuenta cuántos caracteres numéricos 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 representación como cadena es "-321.198623", que tiene 9 caracteres numéricos (sin contar - ni .).

    Pista: convierte n en una cadena, luego usa .len() con ella y resta 1 por cada . o - que contenga.
  • Si to_string es false: analiza la cadena s como un f64 usando .parse() y luego 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. Después, 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