Limpinho

Limpinho

Exercício de aprendizagem

Introdução

Chars

chars

O tipo primitivo char de Java é uma representação de 16 bits de um único caráter. Vários chars podem compor uma string, como "word", ou os chars podem ser processados individualmente. Um literal char é rodeado por aspas simples (por exemplo, 'A').

char lowerA = 'a';
char upperB = 'B';

Obter os chars de uma String

O método String.toCharArray devolve os carateres de uma String como um array. Como mencionado em arrays, podes usar um ciclo for para iterar sobre o array.

String text = "Hello";
char[] asArray = text.toCharArray();

for (char ch: asArray) {
    System.out.println(ch);
}

// Outputs:
// H
// e
// l
// l
// o

A classe Character

Existem muitos métodos da biblioteca padrão para inspecionar e manipular chars. Podes encontrá-los como métodos estáticos da classe java.lang.Character. Aqui estão alguns exemplos:

Character.isWhitespace(' ');    // true
Character.isWhitespace('#');    // false

Character.isLetter('a');        // true
Character.isLetter('3');        // false

Character.isDigit('6');         // true
Character.isDigit('?');         // false

Adicionar um char a uma String

O operador + pode ser usado para adicionar um char a uma String.

'a' + " banana"     // => "a banana"
"banana " + 'a'     // => "banana a"
Caution

Tem cuidado para não usares o + para juntar dois chars e formar uma String! Somar dois chars desta forma dá um int, não uma String! Por exemplo:

'b' + 'c';
// => 197 (not the String "bc")

Isto acontece porque o Java promove o char a int (vê 4.2 Primitive Types and Values da Java Language Specification).

No entanto, quando há muitos carateres para adicionar, pode ser mais eficiente usar um StringBuilder:

StringBuilder builder = new StringBuilder();
builder.append('a');
builder.append('b');
builder.append('c');

String builtString = builder.toString();
// => abc

Instruções

Neste exercício vais implementar um conjunto parcial de rotinas utilitárias para ajudar um programador a limpar nomes SqueakyClean.

Nas 4 tarefas vais construir gradualmente o método clean. Um nome SqueakyClean válido é composto por zero ou mais letras e underscores.

Em todos os casos, é garantido que a string de entrada não é nula. Repara que o método clean deve tratar uma string vazia como válida.

1. Substituir todos os espaços encontrados por underscores

Implementa o método (estático) SqueakyClean.clean() para substituir todos os espaços por underscores. Isto também se aplica a espaços no início e no fim.

SqueakyClean.clean("my   Id");
// => "my___Id"

2. Converter kebab-case em camelCase

Modifica o método (estático) SqueakyClean.clean() para converter kebab-case em camelCase.

SqueakyClean.clean("a-bc");
// => "aBc"

3. Converter leetspeak em texto normal

Modifica o método (estático) SqueakyClean.clean() para converter leetspeak em texto normal.

Por simplicidade, vamos apenas substituir 4, 3, 0, 1 e 7 por a, e, o, l e t, respetivamente.

SqueakyClean.clean("H3ll0 W0rld");
// => "Hello_World"
SqueakyClean.clean("4 73s7");
// => "a_test"

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

Modifica o método (estático) SqueakyClean.clean() para omitir quaisquer carateres que não sejam letras.

SqueakyClean.clean("a$#.b");
// => "ab"
Editar via GitHub A ligação abre numa nova janela ou separador
Java Exercism

Estás pronto para começar Limpinho?

Inscreve-te no Exercism para aprenderes e dominares Java com 26 conceitos158 exercícios, e mentoria humana real, tudo grátis.