Percursos
/
Crystal
Crystal
/
Exercícios
/
Namorada do Secundário
Namorada do Secundário

Namorada do Secundário

Exercício de aprendizagem

Introdução

A String tem vários métodos que podem ser usados para manipular strings. Estes métodos são chamados na própria string e são frequentemente encadeados para realizar várias operações sobre uma string.

A seguinte é uma lista de alguns dos métodos mais comuns. Consulta a documentação da API de String para uma lista completa de métodos.

String#upcase & String#downcase

O método upcase devolve uma nova string com todos os carateres convertidos em maiúsculas.

"hello".upcase
# => "HELLO"

O método downcase devolve uma nova string com todos os carateres convertidos em minúsculas.

"HELLO".downcase
# => "hello"

String#sub & String#gsub

O Crystal tem métodos para substituir partes de uma string. São conhecidos como sub (substituição) e gsub (substituição global).

Estes métodos podem receber uma string, um char ou uma regex como primeiro argumento e uma string ou um char como segundo argumento. O primeiro argumento é a parte da string que vai ser substituída, e o segundo é a substituição. Char e regex serão explicados em conceitos posteriores.

O método sub substitui a primeira ocorrência do primeiro argumento pelo segundo argumento.

"hello".sub("l", "r")
# => "herlo"

O método gsub funciona da mesma forma que o sub, mas substitui todas as ocorrências do primeiro argumento pelo segundo argumento.

"hello".gsub("l", "r")
# => "herro"

String#chomp & String#strip

Os métodos chomp e strip podem ser usados para remover carateres indesejados de uma string.

O método chomp remove, por predefinição, os últimos carateres \r, \n ou \r\n de uma string. Se o método for chamado com um argumento, remove o valor dado do fim da string, caso este exista no fim da string.

"hello\n".chomp
# => "hello"

"hello".chomp("llo")
# => "he"

Por predefinição, o método strip remove todos os espaços em branco do início e do fim de uma string. Se o método for chamado com um argumento, remove esse argumento do início e do fim da string, caso este exista no início ou no fim da string.

" hello ".strip
# => "hello"

String#index

O método index pode ser usado para encontrar o índice de um caráter numa string. O método index recebe uma String, um Char ou uma regex como argumento. Pode receber um segundo argumento opcional para especificar o índice a partir do qual procurar. O método index devolve o índice da primeira ocorrência do argumento.

"hello".index("l")
# => 2

"hello".index("l", 3)
# => 3

String#delete_at

Podes usar o método delete_at para remover um caráter de uma string. O método delete_at recebe um índice como argumento e remove o caráter nesse índice.

"hello".delete_at(0)
# => "ello"

"hello".delete_at(3)
# => "helo"

String#insert

O método insert pode ser usado para inserir uma string num índice específico. O método insert recebe um índice como primeiro argumento e uma string como segundo argumento. O método insert devolve uma nova string com o segundo argumento inserido no índice.

"hello".insert(0, "h")
# => "hhello"

"hello".insert(3, "l")
# => "helllo"

Instruções

Neste exercício, vais ajudar namorados do liceu a declarar o seu amor nas redes sociais, gerando um coração em ASCII com as iniciais deles:

❤ J.  +  M. ❤

1. Limpa o nome

Implementa o método HighSchoolSweetheart.clean_up_name. Deve receber um nome e remover todos os carateres -, substituindo-os por um espaço. Deve também remover os espaços em branco no início e no fim do nome.

HighSchoolSweetheart.clean_up_name("Jane-Ann")
# => "Jane Ann"

2. Obtém a primeira letra do nome

Implementa o método HighSchoolSweetheart.first_letter. Deve receber um nome e devolver a sua primeira letra. Certifica-te de que reutilizas o HighSchoolSweetheart.clean_up_name que definiste no passo anterior.

HighSchoolSweetheart.first_letter("Jane")
# => "J"

3. Formata a primeira letra como uma inicial

Implementa o método HighSchoolSweetheart.initial. Deve receber um nome e devolver a sua primeira letra, em maiúscula, seguida de um ponto. Certifica-te de que reutilizas o HighSchoolSweetheart.first_letter que definiste no passo anterior.

HighSchoolSweetheart.initial("Robert")
# => "R."

4. Coloca as iniciais dentro do coração

Implementa o método HighSchoolSweetheart.pair. Deve receber dois nomes e devolver as iniciais com corações emoji à volta. Certifica-te de que reutilizas o HighSchoolSweetheart.initial que definiste no passo anterior.

HighSchoolSweetheart.pair("Blake Miller", "Riley Lewis")
# => "❤ B.  +  R. ❤"
Editar via GitHub A ligação abre numa nova janela ou separador
Crystal Exercism

Estás pronto para começar Namorada do Secundário?

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