Los caracteres y los strings son la base de la representación de texto en Elm.
Los strings se pueden pensar como listas de caracteres, y la mayoría de las funciones de List tienen su equivalente en el módulo String.
El tipo Char representa un único carácter de unicode y se escribe entre comillas simples, por ejemplo, 'a'.
El módulo Char proporciona funciones de predicado (Char -> Bool) para comprobar cualidades de un carácter: isUpper, isLower, isAlpha e isAlphaNum.
El módulo también proporciona funciones para convertir un carácter (toUpper, toLower, toLocaleUpper, toLocaleLower), así como para obtener su valor numérico de unicode (Int) y viceversa, con toCode y fromCode.
El tipo String proporciona una representación integrada para manipular strings de forma eficiente y puede representar cualquier secuencia de caracteres de unicode, por ejemplo, "this is an Elm string."
Los strings multilínea se representan con comillas dobles triples y pueden contener comillas y saltos de línea sin escapar.
"""
This is a multiline string.
All line-breaks and whitespace,
are preserved.
"""
El módulo String contiene todas las funciones resumidas en la tabla a continuación.
Algunas de las funciones más usadas son:
cons : Char -> String -> String agrega un carácter al inicio de un string.
cons 'T' "he truth is out there"
--> "The truth is out there"
(++): String -> String -> String concatena dos strings.
"butter" ++ "fly"
--> "butterfly"
split : String -> String -> List String divide un string en una lista de strings usando el separador dado.
split ";" "cat;dog;cow"
--> ["cat", "dog", "cow"]
join : String -> List String -> String concatena una lista de strings usando el separador dado.
join "a" ["H", "w", "ii", "n"]
--> "Hawaiian"
replace : String -> String -> String -> String reemplaza todas las apariciones de una subcadena dada.
replace "Hello" "Goodbye cruel" "Hello world."
--> "Goodbye cruel world."
length : String -> Int devuelve el número de caracteres de un string.
length "Hello world."
--> 12
toInt : String -> Maybe Int intenta convertir un string en Just Int y devuelve Nothing para strings con formato incorrecto.
toInt "-42"
--> Just -42
contains : String -> String -> Bool comprueba si el segundo string contiene al primero.
contains "the" "theory"
--> True
map : (Char -> Char) -> String -> String aplica una función dada a cada Char del string.
Ten en cuenta que la función que proporciones debe transformar de Char a Char.
map (\c -> if c == '/' then '.' else c) "a/b/c"
--> "a.b.c"
| Manipular | Subcadenas | Comprobar | Convertir | Orden superior |
|---|---|---|---|---|
reverse |
slice |
length |
toInt |
map |
repeat |
left |
isEmpty |
fromInt |
filter |
replace |
right |
contains |
toFloat |
foldl |
append |
dropLeft |
startsWith |
fromFloat |
foldr |
concat |
dropRight |
indexes |
toList |
any |
split |
fromList |
all |
||
join |
fromChar |
|||
words |
||||
lines |
||||
cons |
||||
uncons |
En este ejercicio implementarás un conjunto parcial de funciones de utilidad para ayudar a un desarrollador a limpiar nombres de identificadores.
En las 5 tareas construirás gradualmente la función clean.
Un identificador válido se compone de cero o más letras y guiones bajos.
Si se pasa un string vacío a la función clean, se debe devolver un string vacío.
Implementa una función clean1 para reemplazar cualquier espacio por guiones bajos. Esto también aplica a los espacios al principio y al final.
clean1 "my Id"
--> "my___Id"
Implementa clean2 para hacer todo lo que hace la función anterior y reemplazar los caracteres de control comunes (\n, \t, y \r ) por el string "[CTRL]".
clean2 "my\nId"
--> "my[CTRL]Id",
Implementa clean3 para hacer todo lo que hace la función anterior y convertir de kebab-case a camelCase.
clean3 "à-ḃç"
--> "àḂç"
Implementa clean4 para hacer todo lo que hace la función anterior y omitir todos los dígitos.
clean4 "123"
--> ""
Por último, implementa clean para hacer todo lo que hace la función anterior y omitir cualquier letra griega en el rango de 'α' a 'ω'.
clean "My Οβιεγτ Finder"
--> "My_Ο_Finder"
Regístrate en Exercism para aprender y dominar Elm con 28 conceptos110 ejercicios y mentoría humana real, todo gratis.