Caracteres e strings formam a base para a representação de texto em Elm.
As strings podem ser vistas como listas de caracteres, e a maioria das funções de List tem a sua equivalente no módulo String.
O tipo Char representa um único caractere unicode entre aspas simples, por exemplo 'a'.
O módulo Char fornece funções de predicado (Char -> Bool) para testar qualidades de um caractere: isUpper, isLower, isAlpha e isAlphaNum
O módulo também fornece funções para converter um caractere toUpper, toLower, toLocaleUpper, toLocaleLower, além de converter de e para o seu valor numérico unicode (Int) com toCode e fromCode.
O tipo String oferece uma representação embutida para a manipulação eficiente de strings e consegue representar qualquer sequência de caracteres unicode, por exemplo "this is an Elm string."
Strings de várias linhas são representadas com três aspas duplas e podem conter aspas e quebras de linha sem escape.
"""
This is a multiline string.
All line-breaks and whitespace,
are preserved.
"""
O módulo String contém todas as funções resumidas na tabela abaixo.
Algumas das funções mais usadas incluem:
cons : Char -> String -> String adiciona um caractere ao início de uma string.
cons 'T' "he truth is out there"
--> "The truth is out there"
(++): String -> String -> String concatena duas strings.
"butter" ++ "fly"
--> "butterfly"
split : String -> String -> List String divide uma string em uma lista de strings no separador dado.
split ";" "cat;dog;cow"
--> ["cat", "dog", "cow"]
join : String -> List String -> String concatena uma lista de strings usando um separador dado.
join "a" ["H", "w", "ii", "n"]
--> "Hawaiian"
replace : String -> String -> String -> String substitui todas as ocorrências de uma substring dada.
replace "Hello" "Goodbye cruel" "Hello world."
--> "Goodbye cruel world."
length : String -> Int retorna o número de caracteres em uma string.
length "Hello world."
--> 12
toInt : String -> Maybe Int tenta converter uma string em Just Int e retorna Nothing para strings com formato incorreto.
toInt "-42"
--> Just -42
contains : String -> String -> Bool verifica se a segunda string contém a primeira.
contains "the" "theory"
--> True
map : (Char -> Char) -> String -> String aplica uma função dada a cada Char da string.
Repare que a função fornecida precisa ser um mapeamento de Char para Char.
map (\c -> if c == '/' then '.' else c) "a/b/c"
--> "a.b.c"
| Manipulação | Substrings | Verificação | Conversão | Ordem 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 |
Neste exercício, você vai implementar um conjunto parcial de funções utilitárias para ajudar quem desenvolve a limpar nomes de identificadores.
Nas 5 tarefas, você vai construir aos poucos a função clean.
Um identificador válido é formado por zero ou mais letras e sublinhados.
Se uma string vazia for passada para a função clean, uma string vazia deve ser retornada.
Implemente uma função clean1 para substituir qualquer espaço por sublinhados. Isso vale também para espaços no início e no fim.
clean1 "my Id"
--> "my___Id"
Implemente clean2 para fazer tudo o que a função anterior faz e substituir caracteres de controle comuns (\n, \t e \r ) pela string "[CTRL]".
clean2 "my\nId"
--> "my[CTRL]Id",
Implemente clean3 para fazer tudo o que a função anterior faz e converter kebab-case em camelCase.
clean3 "à-ḃç"
--> "àḂç"
Implemente clean4 para fazer tudo o que a função anterior faz e omitir todos os dígitos.
clean4 "123"
--> ""
Por fim, implemente clean para fazer tudo o que a função anterior faz e omitir quaisquer letras gregas no intervalo de 'α' a 'ω'.
clean "My Οβιεγτ Finder"
--> "My_Ο_Finder"
Crie sua conta no Exercism para aprender e dominar Elm com 28 conceitos110 exercícios e mentoria humana de verdade, tudo de graça.