Objectifs
- Créer des chaînes de caractères avec des guillemets simples ou doubles.
- Concaténer et interpoler des chaînes pour construire des messages dynamiques.
- Utiliser les méthodes les plus courantes de la classe
String(length,upcase,strip…). - Accéder à des caractères ou des sous-chaînes par leur index.
En Ruby, les chaînes de caractères sont des objets puissants et flexibles, dotés d’une multitude de méthodes très utiles.
Création de chaînes
- Guillemets simples (
'...') : La chaîne est littérale.'Bonjour, #{nom}'# Affiche littéralement#{nom} - Guillemets doubles (
"...") : La chaîne supporte l’interpolation. C’est la méthode à privilégier.nom = "Monde"; "Bonjour, #{nom}"# Affiche “Bonjour, Monde”
Concaténation et Interpolation
-
Concaténation avec
+:"Bonjour" + " " + "Monde"# => “Bonjour Monde” -
Interpolation avec
#{...}(uniquement dans les guillemets doubles) :prefix = "Bonjour"; suffix = "Monde"; "#{prefix}, #{suffix}"# => “Bonjour, Monde” L’interpolation est généralement plus lisible et plus efficace que la concaténation.
Méthodes courantes de String
Voici quelques-unes des méthodes que vous utiliserez constamment.
-
.length: Retourne le nombre de caractères."Ruby".length# => 4 -
.empty?: Renvoietruesi la chaîne est vide,falsesinon."".empty?# => true -
.upcase/.downcase/.capitalize: Changent la casse."bonjour".upcase# => “BONJOUR”"BONJOUR".downcase# => “bonjour”"bonjour".capitalize# => “Bonjour” -
.strip: Supprime les espaces, tabulations et sauts de ligne en début et fin de chaîne. Très utile pour nettoyer une saisie utilisateur." hello ".strip# => “hello” -
.include?(substring): Renvoietruesi la chaîne contient la sous-chaîne."Bonjour".include?("jour")# => true -
.start_with?(prefix)/.end_with?(suffix): Vérifie le début ou la fin de la chaîne."rapport.pdf".end_with?(".pdf")# => true -
.gsub(pattern, replacement): Global SUBstitute. Cherche un motif et remplace toutes ses occurrences."un, deux, trois".gsub(", ", " | ")# => “un | deux | trois”
Accéder aux caractères (comme un tableau)
Une chaîne peut être accédée comme un tableau de caractères. L’indexation commence à 0.
-
Accès par index :
str = "Ruby"str[0]# => “R”str[1]# => “u” -
Accès à une sous-chaîne avec un “range” :
str[1..2]# => “ub” (de l’index 1 à l’index 2 inclus)str[0...2]# => “Ru” (de l’index 0 à l’index 2 exclus)
Méthodes destructrices (!)
Certaines méthodes ont une version “bang” qui se termine par un !. Cela signifie qu’elles modifient la chaîne originale au lieu d’en renvoyer une nouvelle copie. À utiliser avec prudence.
message = "hello"
message.upcase # => "HELLO"
puts message # => "hello" (l'original n'a pas changé)
message.upcase! # => "HELLO"
puts message # => "HELLO" (l'original a été modifié)
Exercices
-
Nettoyage de chaîne :
- Créez une variable
entree_utilisateur = " je veux apprendre Ruby. ". - En une seule ligne, utilisez des méthodes pour transformer cette chaîne en
"Je veux apprendre ruby."(majuscule au début, point à la fin, espaces inutiles supprimés).
- Créez une variable
-
Vérificateur de format :
- Écrivez une expression qui vérifie si une variable
nom_fichierse termine bien par.txt.
- Écrivez une expression qui vérifie si une variable
-
Anonymiseur :
- Créez une chaîne
secret = "Mon mot de passe est 123456". - Utilisez
.gsubpour remplacer123456par[CENSURÉ].
- Créez une chaîne
-
Extraction d’initiales :
- Étant donné une variable
nom_complet = "Yukihiro Matsumoto", écrivez le code pour extraire les initiales “YM”.
- Étant donné une variable