Limpinho

Limpinho

Exercício de aprendizagem

Introdução

Operações com carateres

Os carateres em Clojure são primitivas java.lang.Character, e podemos manipulá-los através de interop, usando os métodos da classe Character:

(Character/isDigit \2)
;;=> true

Utilitários para strings

O Clojure vem com uma poderosa biblioteca de processamento de strings, clojure.string. Muitas vezes, é mais idiomático do que recorrer ao interop.

Instruções

Neste exercício vais implementar um conjunto parcial de rotinas 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.

Em todos os casos, é garantido que a string de entrada não é nil. Se for passada uma string vazia à função, deve ser devolvida uma string vazia.

Repara que quem chama deve evitar chamar a função com um identificador vazio, uma vez que esses identificadores não têm qualquer efeito.

1. Substitui todos os espaços que encontrares por underscores

Implementa a função clean para substituir todos os espaços por underscores. Isto também se aplica a espaços no início e no fim.

(clean "my   Id")
;;=> "my___Id"

2. Substitui os carateres de controlo pela string em maiúsculas "CTRL"

Modifica a função clean para substituir os carateres de controlo pela string em maiúsculas "CTRL". Um caráter é considerado um caráter de controlo ISO se o seu código estiver no intervalo de '\u0000' a '\u001F' ou no intervalo de '\u007F' a '\u009F'.

(clean "my\u007FId")
;;=> "myCTRLId"

3. Converte kebab-case em camelCase

Modifica a função clean para converter kebab-case em camelCase.

(clean "à-ḃç")
;;=> "àḂç"

4. Omite os carateres que não são letras

Modifica a função clean para omitir todos os carateres que não são letras. Nota: os underscores têm de ser preservados do passo anterior.

(clean "1😀2😀3😀")
;; => ""

5. Omite as letras gregas minúsculas

Modifica a função clean para omitir todas as letras gregas no intervalo de 'α' a 'ω'.

(clean "MyΟβιεγτFinder")
;;=> "MyΟFinder"
Editar via GitHub A ligação abre numa nova janela ou separador
Clojure Exercism

Estás pronto para começar Limpinho?

Inscreve-te no Exercism para aprenderes e dominares Clojure com 12 conceitos105 exercícios, e mentoria humana real, tudo grátis.