Eliminando comillas de una cadena

Rust:
Eliminando comillas de una cadena

Cómo hacerlo:

fn remove_quotes(s: &str) -> String {
    s.trim_matches(|c| c == '\"' || c == '\'').to_string()
}

fn main() {
    let quoted_str = "\"¡Hola, Rustaceans!\"";
    let cleaned_str = remove_quotes(quoted_str);
    println!("{}", cleaned_str);
    // Salida: ¡Hola, Rustaceans!
}

A veces tienes una cadena con comillas mixtas, como esta:

fn main() {
    let mixed_quoted = "'Rust dice: \"¡Hola, Mundo!\"'";
    let cleaned_str = remove_quotes(mixed_quoted);
    println!("{}", cleaned_str);
    // Salida: Rust dice: "¡Hola, Mundo!"
}

Aquí, solo se eliminan las comillas simples más externas.

Análisis Profundo

Cuando se eliminan comillas de una cadena, podrías preguntarte por qué no es simplemente un .replace("\"", ""). Al principio, el manejo de texto era menos estandarizado, y diferentes sistemas tenían diferentes formas de almacenar y transmitir texto, a menudo con algún tipo de ‘secuencia de escape’ para caracteres especiales. El método trim_matches de Rust es más versátil, permitiéndote especificar múltiples caracteres para recortar, y si recortar desde el inicio (prefijo), el final (sufijo), o ambos lados de la cadena.

Por supuesto, existen alternativas. Regex es la fuerza potente para la manipulación de cadenas, capaz de coincidir con patrones complejos, y sería excesivo solo para eliminar comillas. Librerías como trim_in_place podrían ofrecer un recorte en el lugar sin la sobrecarga de crear un nuevo objeto String, lo cual podría ser deseable para aplicaciones críticas en rendimiento.

En el fondo, trim_matches en realidad itera a través de los caracteres de la cadena desde ambos extremos, comprobando contra el patrón proporcionado hasta que se encuentra un carácter que no coincide. Es eficiente para lo que hace, pero siempre ten en cuenta que trabaja con valores escalares Unicode. Si tu cadena podría contener caracteres Unicode de varios bytes, no tienes que preocuparte por que los divida.

Ver También