Rutas
/
Elm
Elm
/
Ejercicios
/
Impecable
Impecable

Impecable

Ejercicio de aprendizaje

Introducción

Strings

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.

Caracteres

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.

Strings

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

Funciones de string

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"

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.

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.

1. Sustituye los espacios por guiones bajos

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"

2. Sustituye los caracteres de control por el string en mayúsculas «[CTRL]»

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

3. Convierte kebab-case a camelCase

Implementa clean3 para hacer todo lo que hace la función anterior y convertir 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 que va de la α a la ω.

clean "My Οβιεγτ Finder"
    --> "My_Ο_Finder"
Editar en GitHub El enlace se abre en una ventana o pestaña nueva
Elm Exercism

¿Listo para empezar Impecable?

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