Menu
Coddy logo textTech

Macro format!

Parte de la sección Fundamentals del Journey de Rust de Coddy — lección 70 de 75.

En Rust, la macro format! permite combinar texto con variables de una manera legible y personalizable. Esta macro es similar a println!, pero en lugar de imprimir la salida en la consola, devuelve una cadena formateada que puedes almacenar en una variable o utilizar en otras operaciones.

La sintaxis más simple utiliza marcadores de posición sin nombre {}:

let name = "Alice";
let age = 30;

let formatted = format!("Name: {}, Age: {}", name, age);
println!("{}", formatted);
// Salida: Name: Alice, Age: 30

Puedes usar nombres de variables directamente en los marcadores de posición:

let name = "Bob";
let age = 25;

let formatted = format!("Name: {name}, Age: {age}");
println!("{}", formatted);
// Salida: Name: Bob, Age: 25

Puedes especificar la posición de los argumentos usando números:

let formatted = format!("{1} {0} {2}", "first", "second", "third");
println!("{}", formatted);
// Salida: second first third

Puedes controlar cómo se formatean los valores utilizando especificadores de formato:

// Formateo de números
let pi = 3.1415926;
let formatted_float = format!("{:.2}", pi);
// "3.14"

// Relleno con ceros
let padded = format!("{:0>5}", "123");
// "00123"
challenge icon

Desafío

Fácil

Crea un programa que genere un código secreto a partir de un nombre y un año de nacimiento utilizando estas reglas exactas:

  • Toma la primera letra del nombre y la convierte en mayúscula
  • Invierte los dígitos del año
  • Envuelve la primera letra con símbolos "⭐"
  • Añade un "-" entre la letra envuelta y el año invertido

Para invertir una cadena, utiliza el siguiente código: .to_string().chars().rev().collect::<String>()

Hoja de referencia

La macro format! combina texto con variables y devuelve una cadena formateada que puede almacenarse en una variable.

Sintaxis básica con marcadores de posición sin nombre:

let name = "Alice";
let age = 30;
let formatted = format!("Name: {}, Age: {}", name, age);

Uso de nombres de variables directamente en los marcadores de posición:

let name = "Bob";
let age = 25;
let formatted = format!("Name: {name}, Age: {age}");

Especificación de las posiciones de los argumentos con números:

let formatted = format!("{1} {0} {2}", "first", "second", "third");
// Output: "second first third"

Especificadores de formato para controlar la salida:

// Number formatting
let pi = 3.1415926;
let formatted_float = format!("{:.2}", pi); // "3.14"

// Padding with zeros
let padded = format!("{:0>5}", "123"); // "00123"

Para invertir una cadena: .to_string().chars().rev().collect::<String>()

Pruébalo tú mismo

use std::io;


fn main() {
    let mut input_name = String::new();
    let mut input_year = String::new();
    io::stdin().read_line(&mut input_name).unwrap();
    io::stdin().read_line(&mut input_year).unwrap();
    let name = input_name.trim();
    let year: i32 = input_year.trim().parse().unwrap();

    // Escribe tu código debajo
    
    
    let secret_code =
    println!("{}", secret_code);
}
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