Os carateres e as strings são a base da representação de texto em Elm.
As strings podem ser vistas como listas de carateres, e a maioria das funções de List tem o seu equivalente no módulo String.
O tipo Char representa um único caráter unicode, entre aspas simples, por exemplo 'a'.
O módulo Char disponibiliza funções de predicado (Char -> Bool) para testar qualidades de um caráter: isUpper, isLower, isAlpha e isAlphaNum.
O módulo também disponibiliza funções para converter um caráter com toUpper, toLower, toLocaleUpper e toLocaleLower, bem como de e para o seu valor numérico unicode (Int) com toCode e fromCode.
O tipo String fornece uma representação incorporada para manipular strings de forma eficiente e pode representar qualquer sequência de carateres unicode, por exemplo "isto é uma string de Elm."
As strings com várias linhas são representadas com aspas duplas triplas e podem conter aspas e mudanças de linha não escapadas.
"""
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 utilizadas incluem:
cons : Char -> String -> String adiciona um caráter ao início de uma string.
cons 'T' "he truth is out there"
--> "The truth is out there"
(++): String -> String -> String junta duas strings.
"butter" ++ "fly"
--> "butterfly"
split : String -> String -> List String divide uma string numa lista de strings, no separador indicado.
split ";" "cat;dog;cow"
--> ["cat", "dog", "cow"]
join : String -> List String -> String concatena uma lista de strings com um separador indicado.
join "a" ["H", "w", "ii", "n"]
--> "Hawaiian"
replace : String -> String -> String -> String substitui todas as ocorrências de uma substring indicada.
replace "Hello" "Goodbye cruel" "Hello world."
--> "Goodbye cruel world."
length : String -> Int devolve o número de carateres de uma string.
length "Hello world."
--> 12
toInt : String -> Maybe Int tenta converter uma string em Just Int e devolve Nothing para strings com formato inválido.
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 indicada a cada Char da string.
Repara que a função fornecida tem de ser um mapeamento de e para Char.
map (\c -> if c == '/' then '.' else c) "a/b/c"
--> "a.b.c"
| Manipular | Substrings | Verificar | Converter | 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 vais implementar um conjunto parcial de funções utilitárias para ajudar um programador a limpar nomes de identificadores.
Ao longo das 5 tarefas vais construir gradualmente a função clean.
Um identificador válido é composto por zero ou mais letras e underscores.
Se for passada uma string vazia à função clean, deve ser devolvida uma string vazia.
Implementa uma função clean1 que substitua todos os espaços por underscores. Isto também se aplica aos espaços no início e no fim.
clean1 "my Id"
--> "my___Id"
Implementa a clean2 para fazer tudo o que a função anterior faz e substituir os carateres de controlo comuns (\n, \t e \r) pela string "[CTRL]".
clean2 "my\nId"
--> "my[CTRL]Id",
Implementa a clean3 para fazer tudo o que a função anterior faz e converter kebab-case em camelCase.
clean3 "à-ḃç"
--> "àḂç"
Implementa a clean4 para fazer tudo o que a função anterior faz e omitir todos os algarismos.
clean4 "123"
--> ""
Por fim, implementa a clean para fazer tudo o que a função anterior faz e omitir quaisquer letras gregas no intervalo entre 'α' e 'ω'.
clean "My Οβιεγτ Finder"
--> "My_Ο_Finder"
Inscreve-te no Exercism para aprenderes e dominares Elm com 28 conceitos110 exercícios, e mentoria humana real, tudo grátis.