Los caracteres y las cadenas de caracteres constituyen la base de la representación de texto en Elm.
Los strings se pueden concebir como arrays 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 Unicode 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 convertir a y desde su valor numérico Unicode (Int) 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 Unicode, por ejemplo, "this is an Elm string."
Los strings multilínea se representan con triples comillas dobles 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 siguiente.
Algunas de las funciones más utilizadas son:
cons : Char -> String -> String añade un carácter al principio 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 un array de strings en el separador dado.
split ";" "cat;dog;cow"
--> ["cat", "dog", "cow"]
join : String -> List String -> String concatena un array de strings con un 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 un formato incorrecto.
toInt "-42"
--> Just -42
contains : String -> String -> Bool comprueba si el segundo string contiene el 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 proporcionada debe ser una transformación de Char en 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.
A lo largo de las 5 tareas irás construyendo poco a poco 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, debería devolverse un string vacío.
Implementa una función clean1 que sustituya los espacios por guiones bajos. Esto también se 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 sustituir los caracteres de control habituales (\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 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 que va de la α a la ω.
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.