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: 30Puedes 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: 25Puedes especificar la posición de los argumentos usando números:
let formatted = format!("{1} {0} {2}", "first", "second", "third");
println!("{}", formatted);
// Salida: second first thirdPuedes 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"Desafío
FácilCrea 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);
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentals
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ámica