Retour au cours

les chaînes de caractères (strings)

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? : Renvoie true si la chaîne est vide, false sinon. "".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) : Renvoie true si 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

  1. 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).
  2. Vérificateur de format :

    • Écrivez une expression qui vérifie si une variable nom_fichier se termine bien par .txt.
  3. Anonymiseur :

    • Créez une chaîne secret = "Mon mot de passe est 123456".
    • Utilisez .gsub pour remplacer 123456 par [CENSURÉ].
  4. Extraction d’initiales :

    • Étant donné une variable nom_complet = "Yukihiro Matsumoto", écrivez le code pour extraire les initiales “YM”.