es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Necesito extraer la última palabra de una cadena de Rust.

Estoy procesando una cadena en Rust y necesito poder extraer el último conjunto de caracteres de esa cadena. En otras palabras, dada una cadena como la siguiente:

some|not|necessarily|long|name

Necesito poder obtener la última parte de esa cadena, es decir, “name”, y ponerlo en otra cadena (String) o en un &str, de la siguiente manera:

let last = call_some_function("some|not|necessarily|long|name");

de modo que last se convierta en “name”.

¿Hay alguna forma de hacer esto? ¿Hay alguna función de cadena que permita hacerlo fácilmente? Si no es así (después de revisar la documentación, dudo que la haya), ¿cómo se haría esto en Rust?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, hay una forma de extraer el último conjunto de caracteres de una cadena en Rust. Una forma de hacer esto es usando el método split() para dividir la cadena en partes utilizando el delimitador |, y luego utilizando el método last() para obtener el último elemento en el iterador resultante. Aquí tienes un ejemplo de código:

    let s = "some|not|necessarily|long|name";
    let last = s.split("|").last().unwrap();
    

    En este código, primero creamos una cadena s que contiene la cadena de entrada. Luego llamamos al método split() en s para dividirla en partes utilizando el delimitador |. Esto devuelve un iterador sobre las partes, en el cual llamamos al método last() para obtener el último elemento. Finalmente, llamamos al método unwrap() para extraer la cadena del tipo Option devuelto por last(). La cadena resultante last contiene la última parte de la cadena de entrada.

    Alternativamente, puedes usar la notación de segmentación de cadenas de Rust para extraer directamente la última parte de la cadena. Aquí tienes un ejemplo de código:

    let s = "some|not|necessarily|long|name";
    let last = &s[s.rfind('|').map_or(0, |i| i + 1)..];
    

    En este código, primero creamos una cadena s que contiene la cadena de entrada. Luego llamamos al método rfind() en s para encontrar la última aparición del delimitador |. Esto devuelve un tipo Option que contiene el índice del último delimitador, o None si el delimitador no se encuentra. Luego llamamos al método map_or() en el resultado de rfind() para extraer el valor real del índice o devolver 0 si el delimitador no se encuentra. Finalmente, usamos la notación de segmentación de cadenas de Rust para extraer la última parte de la cadena a partir del valor del índice devuelto por map_or() hasta el final de la cadena. La cadena resultante last contiene la última parte de la cadena de entrada.

Comments are closed.