C-SHARP - 4.7 String Avancée

Démonstration complète des méthodes string vues précédemment, sur Visual Studio. On enchaîne formatage, recherche, extraction, remplacement, fractionnement et conversion. Commençons par déclarer une chaîne de test :

string chaine = "  Hello World  ";
Console.WriteLine(chaine);
Console.WriteLine(chaine.ToLower());   // "  hello world  "
Console.WriteLine(chaine.ToUpper());   // "  HELLO WORLD  "
Console.WriteLine(chaine.Trim());      // "Hello World" (espaces supprimes)

IndexOf, LastIndexOf et Substring

Pour rechercher la position d'un mot et gérer le cas où il est absent (-1 retourné) :

string s = "Je vais a la salle de sport et apres je vais aller au cinema";
string mot = "sale";
if (s.IndexOf(mot) == -1)
{
    Console.WriteLine("Ce mot n'est pas dans la chaine");
}
else
{
    Console.WriteLine("Ce mot se trouve a l'index " + s.IndexOf(mot));
}

// LastIndexOf parcourt depuis la fin, mais l'index renvoye est compte depuis le debut
Console.WriteLine(s.LastIndexOf("vais"));

Substring combinée à IndexOf permet d'extraire dynamiquement une portion sans compter les caractères à la main :

var copie = s.Substring(s.IndexOf("et"));
// "et apres je vais aller au cinema"
Console.WriteLine(copie.Substring(0, copie.IndexOf("cinema")));
// "et apres je vais aller au "

Replace, IsNullOrEmpty/WhiteSpace, Split

string tmp = "aaaaaa";
Console.WriteLine(tmp.Replace("a", "e"));    // "eeeeee"

string vide = " ";
Console.WriteLine(string.IsNullOrEmpty(vide));        // false (contient un espace)
Console.WriteLine(string.IsNullOrWhiteSpace(vide));   // true

var tab = copie.Split(' ');     // tableau de mots
for (int i = 0; i < tab.Length; i++)
{
    Console.WriteLine(tab[i]);
}

Conversion nombre vers chaîne avec format

Pour formater un prix en devise (dollars), il faut combiner ToString("C") avec une CultureInfo. La virgule, le symbole monétaire et les séparateurs dépendent de la culture choisie :

using System.Globalization;

int prix = 3199;
CultureInfo symbole = new CultureInfo("en-US");
Console.WriteLine(prix.ToString());              // "3199"
Console.WriteLine(prix.ToString("C", symbole));  // "$3,199.00"
Console.WriteLine(prix.ToString("C0", symbole)); // "$3,199" sans decimales

Pour des euros, on remplace par new CultureInfo("fr-FR"). Cette section a couvert : formatage (ToLower, ToUpper, Trim), recherche (IndexOf, LastIndexOf), extraction (Substring), remplacement (Replace), tests de vacuité (IsNullOrEmpty / IsNullOrWhiteSpace), fractionnement (Split) et conversion (ToString avec format + CultureInfo). La doc Microsoft expose des dizaines d'autres méthodes pour les cas particuliers.

En résumé

Cette vidéo présente une démonstration pratique des méthodes de manipulation de chaînes de caractères en C#, en appliquant les concepts théoriques vus précédemment. Elle couvre les méthodes ToLower(), ToUpper() et Trim() pour modifier les strings, puis explore IndexOf() et LastIndexOf() pour rechercher des caractères ou des mots. La vidéo montre comment utiliser les conditions pour vérifier le succès d'une recherche et comment extraire des sous-chaînes dynamiquement avec Substring().

Points clés

  • Les méthodes ToLower(), ToUpper() et Trim() permettent respectivement de convertir une chaîne en minuscules, majuscules ou de supprimer les espaces au début et à la fin
  • Trim() n'affecte que les espaces en début et fin de chaîne, pas ceux situés au milieu
  • IndexOf() retourne l'index de la première occurrence d'un mot, tandis que LastIndexOf() retourne celui de la dernière occurrence en cherchant à partir de la fin
  • Quand un mot n'est pas trouvé, IndexOf() retourne -1, ce qui permet d'ajouter une condition pour un meilleur retour utilisateur
  • Substring() extrait une partie d'une chaîne en prenant un index de départ, et peut être combinée avec IndexOf() pour une extraction dynamique
  • Combiner IndexOf() avec Substring() rend le code réutilisable sans avoir besoin de compter manuellement les index

Questions fréquentes

Qu'est-ce que la méthode Trim() fait exactement sur une chaîne de caractères ?

La méthode Trim() supprime les espaces inutiles au début et à la fin de la chaîne, mais elle ne retire pas les espaces situés au milieu de celle-ci.

Quelle est la différence entre IndexOf() et LastIndexOf() en C# ?

IndexOf() recherche et retourne l'index de la première occurrence d'un mot, tandis que LastIndexOf() retourne l'index de la dernière occurrence en commençant la recherche à partir de la fin. Les deux retournent -1 si le mot n'est pas trouvé.

Comment extraire dynamiquement une partie d'une chaîne sans compter manuellement les index ?

Vous pouvez combiner IndexOf() pour trouver l'index de départ avec Substring() pour extraire la partie désirée, ce qui rend le code réutilisable et adaptable même si la chaîne de base change.