Menu
Coddy logo textTech

Creación de Slices de String

Parte de la sección Logic & Flow del Journey de Rust de Coddy — lección 55 de 66.

Ahora que entiendes la diferencia entre String y &str, aprendamos cómo crear slices de cadena a partir de strings existentes. Hay dos formas principales de crear un &str a partir de un String.

La forma más sencilla es usar el operador de referencia & con tu String. Esto crea un slice que hace referencia a toda la cadena:

let my_string = String::from("Hello World");
let slice: &str = &my_string; // Esto crea un slice de toda la cadena

También puedes crear slices de partes específicas de una cadena utilizando la sintaxis de rango. El formato es &string[start..end], donde start es el índice inicial y end es una posición después del último carácter que deseas incluir. Estos índices son de tipo usize, que es el tipo de entero sin signo de Rust utilizado para indexación y tamaños; solo puede ser cero o positivo, lo cual tiene sentido ya que un índice de cadena nunca puede ser negativo:

let my_string = String::from("Hello World");
let first_word = &my_string[0..5]; // Esto nos da "Hello"
let second_word = &my_string[6..11]; // Esto nos da "World"
challenge icon

Desafío

Fácil

Recibirás dos entradas. La primera entrada es una oración completa, y la segunda entrada son dos números separados por un espacio que representan los índices de inicio y fin para crear un slice. Crea un String a partir de la primera entrada, luego crea un slice de cadena utilizando el rango especificado por los dos índices. Imprime la cadena original en la primera línea y el slice extraído en la segunda línea.

Requisitos:

  • Lee la primera entrada (la oración completa) y elimina los espacios en blanco (trim)
  • Crea un String a partir de esta entrada
  • Lee la segunda entrada (dos números separados por un espacio) y elimina los espacios en blanco (trim)
  • Divide la segunda entrada por el espacio para obtener los índices de inicio y fin
  • Convierte (parse) ambos índices a usize
  • Crea un slice de cadena utilizando la sintaxis de rango &string[start..end]
  • Imprime la cadena original
  • Imprime el slice extraído

Entrada:

  • Primera línea: Una oración (por ejemplo, Hello World)
  • Segunda línea: Dos números separados por un espacio (por ejemplo, 0 5)

Salida:

  • Primera línea: La cadena original
  • Segunda línea: El slice extraído

Hoja de referencia

Hay dos formas principales de crear un &str a partir de un String.

Usa el operador de referencia & para crear un slice de toda la cadena:

let my_string = String::from("Hello World");
let slice: &str = &my_string;

Usa la sintaxis de rango &string[start..end] para crear slices de partes específicas:

let my_string = String::from("Hello World");
let first_word = &my_string[0..5]; // "Hello"
let second_word = &my_string[6..11]; // "World"

El índice start es inclusivo y el índice end es exclusivo (uno después del último carácter).

Pruébalo tú mismo

use std::io;

fn main() {
    // Leer la primera entrada (la frase completa)
    let mut sentence = String::new();
    io::stdin().read_line(&mut sentence).expect("Failed to read line");
    let sentence = sentence.trim();
    
    // Leer la segunda entrada (dos números separados por un espacio)
    let mut indices = String::new();
    io::stdin().read_line(&mut indices).expect("Failed to read line");
    let indices = indices.trim();
    
    // TODO: Escribe tu código a continuación
    // Analizar los índices y crear el slice de la cadena
    
    
    // Imprimir la cadena original y el slice
}
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 Logic & Flow