Tracks
/
Elm
Elm
/
Ejercicios
/
Impecable
Impecable

Impecable

Ejercicio de aprendizaje

Introducción

Strings

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.

Caracteres

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.

Strings

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. 
"""

Funciones de String

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"

Todas las funciones de String:

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

Instrucciones

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.

1. Reemplaza los espacios por guiones bajos

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"

2. Reemplaza los caracteres de control por el string en mayúsculas "[CTRL]"

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",

3. Convierte de kebab-case a camelCase

Implementa clean3 para hacer todo lo que hace la función anterior y convertir de kebab-case a camelCase.

clean3 "à-ḃç"
    --> "àḂç"

4. Omite los dígitos

Implementa clean4 para hacer todo lo que hace la función anterior y omitir todos los dígitos.

clean4 "123"
    --> ""

5. Omite las letras griegas minúsculas

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"
Editar en GitHub El enlace se abre en una ventana o una pestaña nuevas
Elm Exercism

¿Todo listo para empezar Impecable?

Regístrate en Exercism para aprender y dominar Elm con 28 conceptos110 ejercicios y mentoría humana real, todo gratis.