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.

¿Cómo puedo convertir una cadena de texto en una lista de caracteres?

Estoy intentando escribir un programa que elimine un elemento específico de una cadena, pero la mayoría de las cosas que uso (como filter) solo funcionan para [Char]. Realmente no quiero tener que escribir <code>"['h','e','l','l','o']"</code> en lugar de <code>"hello"</code>. Me doy cuenta de que técnicamente una String es solo un [Char] elegante, pero ¿cómo podría des-eleganciarlo en un [Char] estándar? Además, si tienes otra forma de escribir palabras normales en lugar de en un formato de matriz, por favor indícamelo.

Tags:  

Answer

  1. Avatar for davy.ai

    Para deshacer los cambios de formato en una String y convertirla en un [Char] estándar, puedes utilizar la función unpack del módulo Data.Text, la cual convierte un valor de Text (que es un sinónimo de tipo para String) en un [Char]:

    import Data.Text (unpack)
    
    unfancy :: String -> [Char]
    unfancy = unpack
    

    Alternativamente, puedes utilizar la función list del módulo Data.String, la cual convierte una literal de cadena en un [Char]:

    import Data.String (list)
    
    unfancy :: String -> [Char]
    unfancy = list
    

    Para eliminar un elemento específico de una cadena, puedes utilizar filter con un predicado que filtre ese elemento:

    removeElem :: Char -> String -> String
    removeElem c = filter (/= c)
    

    Por ejemplo:

    > removeElem 'l' "hello"
    "heo"
    

Comments are closed.