Parcours
/
Crystal
Crystal
/
Exercices
/
Premier amour du lycée
Premier amour du lycée

Premier amour du lycée

Exercice d'apprentissage

Introduction

String dispose de plusieurs méthodes qui permettent de manipuler des strings.
Ces méthodes s'appellent sur la string elle-même et sont souvent enchaînées pour effectuer plusieurs opérations sur une string.

Voici une liste de quelques-unes des méthodes les plus courantes. Consulte la documentation de l'API de String pour une liste complète des méthodes.

String#upcase & String#downcase

La méthode upcase renvoie une nouvelle string dont tous les caractères sont convertis en majuscules.

"hello".upcase
# => "HELLO"

La méthode downcase renvoie une nouvelle string dont tous les caractères sont convertis en minuscules.

"HELLO".downcase
# => "hello"

String#sub & String#gsub

Crystal propose des méthodes pour remplacer des parties d'une string. Elles s'appellent sub (substitution) et gsub (substitution globale).

Ces méthodes prennent en premier argument une string, un Char ou une regex, et en second argument une string ou un Char. Le premier argument est la partie de la string qui sera remplacée, et le second argument est le remplacement. Les Char et les regex seront expliqués dans des concepts ultérieurs.

La méthode sub remplace la première occurrence du premier argument par le second argument.

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

La méthode gsub fonctionne comme sub, mais remplace toutes les occurrences du premier argument par le second argument.

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

String#chomp & String#strip

chomp et strip permettent de supprimer des caractères indésirables d'une string.

Par défaut, la méthode chomp supprime les derniers caractères \r, \n ou \r\n d'une string. Si la méthode est appelée avec un argument, elle supprime la valeur donnée à la fin de la string, à condition qu'elle s'y trouve.

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

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

Par défaut, la méthode strip supprime tous les espaces au début et à la fin d'une string. Si la méthode est appelée avec un argument, elle supprime cet argument au début et à la fin de la string, s'il s'y trouve.

" hello ".strip
# => "hello"

String#index

La méthode index permet de trouver l'indice d'un caractère dans une string. La méthode index prend en argument une String, un Char ou une regex. Elle peut prendre un second argument facultatif pour préciser l'indice à partir duquel effectuer la recherche. La méthode index renvoie l'indice de la première occurrence de l'argument.

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

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

String#delete_at

Tu peux utiliser la méthode delete_at pour supprimer un caractère d'une string. La méthode delete_at prend un indice en argument et supprime le caractère situé à cet indice.

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

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

String#insert

La méthode insert permet d'insérer une string à un indice précis. La méthode insert prend un indice en premier argument et une string en second argument. La méthode insert renvoie une nouvelle string dans laquelle le second argument est inséré à l'indice donné.

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

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

Instructions

Dans cet exercice, tu vas aider des amoureux de lycée à déclarer leur amour sur les réseaux sociaux en générant un cœur en ASCII avec leur initiale :

❤ J.  +  M. ❤

1. Nettoie le nom

Implémente la méthode HighSchoolSweetheart.clean_up_name. Elle prend un nom, en retire tous les caractères - et les remplace par un espace. Elle retire aussi les espaces au début et à la fin du nom.

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

2. Récupère la première lettre du nom

Implémente la méthode HighSchoolSweetheart.first_letter. Elle prend un nom et renvoie sa première lettre. Pense à réutiliser HighSchoolSweetheart.clean_up_name, que tu as définie à l'étape précédente.

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

3. Mets la première lettre au format d'une initiale

Implémente la méthode HighSchoolSweetheart.initial. Elle prend un nom et renvoie sa première lettre, en majuscule, suivie d'un point. Pense à réutiliser HighSchoolSweetheart.first_letter, que tu as définie à l'étape précédente.

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

4. Place les initiales à l'intérieur du cœur

Implémente la méthode HighSchoolSweetheart.pair. Elle prend deux noms et renvoie les initiales entourées de cœurs emoji. Pense à réutiliser HighSchoolSweetheart.initial, que tu as définie à l'étape précédente.

HighSchoolSweetheart.pair("Blake Miller", "Riley Lewis")
# => "❤ B.  +  R. ❤"
Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
Crystal Exercism

Prêt à commencer Premier amour du lycée ?

Inscris-toi sur Exercism pour apprendre et maîtriser Crystal avec 26 concepts142 exercices, et un vrai mentorat humain, le tout gratuitement.