CodeGym /Cours /C# SELF /Échappement, caractères spéciaux et interpolation de chaî...

Échappement, caractères spéciaux et interpolation de chaînes

C# SELF
Niveau 9 , Leçon 1
Disponible

1. Caractères spéciaux de base et échappement

En programmation, les chaînes ne sont pas faites que de lettres, mais aussi de caractères spéciaux : guillemets, retours à la ligne, tabulations, et parfois même des trucs comme \n et \t. Mais si tu veux écrire dans une chaîne Salut, "user"!, le compilateur va direct te demander : « Les guillemets dans la chaîne, c'est une erreur ou quoi ? ». C'est là qu'intervient le mécanisme d'échappement.

En C#, l'échappement, c'est la façon de "dire qu'on traite différemment" certains caractères dans une chaîne. Pour ça, on utilise le backslash \ (aussi appelé « backslash »).

Caractères spéciaux classiques

Séquence Description Démo
\n Retour à la ligne Appuyé sur Entrée
\t Tabulation Tab
\\ Littéralement "backslash" \
\" Guillemet dans la chaîne "
\' Apostrophe (rarement utile dans les chaînes) '
\r Retour chariot (ancienne façon de faire un retour à la ligne, rarement utilisé)
\0 Caractère Null (Invisible)
\b Backspace (efface le caractère précédent — en console ça marche pas toujours)

Comment ça marche

On va écrire quelques lignes avec des caractères échappés pour voir comment ça fonctionne.


Console.WriteLine("Salut, \"Utilisateur\"!");
// Affiche : Salut, "Utilisateur"!

Console.WriteLine("C:\\Program Files\\MyApp");
// Affiche : C:\Program Files\MyApp

Console.WriteLine("Ligne 1\nLigne 2");
// Affiche :
// Ligne 1
// Ligne 2

Console.WriteLine("J'\taime\tla tabulation !");
// Affiche :
// J'      aime   la tabulation !

Voilà, avec juste un petit backslash (\), tu peux « faire passer » presque n'importe quel caractère spécial dans une chaîne, sans faire paniquer le compilateur ou ton pote de dev.

2. Chaînes normales et verbatim (@-chaînes)

Mais si tu dois écrire plein de backslashs — genre dans des chemins de fichiers ? Faire \\ à chaque fois, c'est pas pour les âmes sensibles. Heureusement, en C#, il y a les littéraux de chaîne verbatim (verbatim strings), qui commencent par le symbole @.

À quoi ça ressemble ?


string path = "C:\\Users\\Ann\\Documents\\";
string verbatimPath = @"C:\Users\Ann\Documents\";

Dans les chaînes verbatim, pas besoin d'échappement — le backslash est juste un caractère normal. Mais attention : les guillemets dans ces chaînes doivent être doublés !


string quote = @"Ceci est une chaîne verbatim avec des guillemets : ""Hello""!";
Console.WriteLine(quote);
// Affiche : Ceci est une chaîne verbatim avec des guillemets : "Hello"!

Comparaison visuelle

Style Syntaxe Comment ça marche
Normal "C:\\Folder\\File.txt" Chaque \ — doublé
Verbatim (@) @"C:\Folder\File.txt" Tous les \ — normaux
Verbatim avec guillemets @"Texte avec ""guillemets"" dedans" Guillemets — doublés

Petit hack de pro : utilise les chaînes verbatim pour les chemins de fichiers, le texte multilignes et les templates de regex.

3. Retours à la ligne et chaînes multilignes

Très souvent, tu dois écrire un message multilignes ou un ASCII-art. La façon la plus directe — utiliser \n dans une chaîne normale ou les littéraux verbatim. Le littéral verbatim garde tous les caractères comme ils sont, y compris les retours à la ligne. Exemple :


Console.WriteLine("Première ligne\nDeuxième ligne");

Console.WriteLine(@"Chaîne multilignes.
Où pas besoin d'échapper les retours à la ligne
Et même les tabulations    marchent comme ça.");

Aussi, en C#, il y a maintenant les raw string literals (triple guillemets), qui permettent aussi d'écrire du texte multilignes, mais sans doubler les guillemets. Exemple :


string json = """
    {
        "name": "Alice",
        "age": 30,
        "skills": ["C#", "SQL", "Azure"]
    }
    """;

Console.WriteLine(json);

4. Unicode — comment C# stocke tous les caractères du monde

Aujourd'hui, on bosse pas que sur l'alphabet latin, mais aussi sur le cyrillique, les idéogrammes, les symboles mathématiques et même les emojis. Tout ça, c'est possible grâce au système d'encodage des caractères — Unicode.

C'est quoi Unicode ?

Unicode — c'est une norme internationale qui donne un numéro unique (code point) à chaque caractère, peu importe la langue ou la plateforme. Grâce à ça, tu peux facilement utiliser dans C# du texte cyrillique, anglais, chinois, et même des caractères spéciaux rares.

Exemple de chaîne dans différentes langues :


Console.WriteLine("Hello, monde ! 你好! مرحبا!");

Caractères Unicode dans les chaînes

Tu peux écrire directement n'importe quel caractère supporté par ton encodage, ou utiliser les séquences d'échappement du genre \uXXXX, où XXXX — c'est le code hexadécimal à 4 chiffres du caractère.


Console.WriteLine("Symbole : \u263A"); // Affichera ☺

Pour les caractères avec un code supérieur à 65535 (genre beaucoup d'emojis), on utilise \UXXXXXXXX (8 chiffres) :


Console.WriteLine("Emoji : \U0001F60A"); // Affichera 😊

Qu'est-ce que ça t'apporte ?

  • Tu peux stocker et manipuler n'importe quel texte.
  • N'aie pas peur de mélanger les langues et d'utiliser des caractères chelous — C# et .NET gèrent Unicode “out of the box”.
  • C'est super important si tu bosses avec des utilisateurs internationaux ou des alphabets exotiques.

5. Emojis et caractères spéciaux dans les chaînes

Les chaînes modernes — c'est pas que des lettres, c'est aussi des emojis ! Par exemple, tu veux envoyer à l'utilisateur un message fun avec un “smiley”.

Comment ajouter un emoji dans une chaîne ?

Colle l'emoji direct dans la chaîne :
Copie juste l'emoji que tu veux (genre 😊, 🚀, 🐱) et colle-le dans ton littéral de chaîne :


Console.WriteLine("Salut ! 😊");

Utilise les codes Unicode :
Pour la plupart des emojis, utilise \U et le code à 8 chiffres.


Console.WriteLine("Voici un chat : \U0001F431"); // 🐱

Tu peux trouver les codes des emojis dans les tableaux Unicode en ligne.

Particularités avec les emojis

Les emojis peuvent prendre 2 caractères ou plus dans une chaîne (parce que leur code Unicode fait plus de 16 bits).

Pour certaines opérations (genre calculer la longueur d'une chaîne), ça peut surprendre :


string s = "😊";
Console.WriteLine(s.Length); // Peut afficher 2, pas 1 !

C'est parce que le codepoint de cet emoji est codé sur deux caractères.

Quand tu affiches en console ou sur une page web, la plupart des emojis s'affichent bien, si ton système et ta police les supportent.

Exemple d'affichage d'une chaîne avec emoji


Console.WriteLine("Félicitations pour le succès ! 🎉 Tu gères ! 🚀");

6. Pièges et erreurs fréquentes

Les débutants se plantent souvent avec l'échappement des guillemets et des backslashs. Par exemple, si tu oublies l'échappement, le compilateur va croire que ta chaîne est finie trop tôt.

Erreur :


Console.WriteLine("Il a dit : "Salut !""); // Erreur ! Le compilateur panique.

Correct :


Console.WriteLine("Il a dit : \"Salut !\"");

Ou, si tu veux afficher un chemin de fichier, parfois on fait ça :


Console.WriteLine("C:\Temp\file.txt"); // Ça va faire une erreur ou un résultat bizarre, genre : C:  emp ile.txt

Parce que \t et \f — ce sont des caractères spéciaux (tabulation et saut de page). Tu peux corriger ça de deux façons principales :


Console.WriteLine("C:\\Temp\\file.txt");    // Double backslash
Console.WriteLine(@"C:\Temp\file.txt");     // Chaîne verbatim

À retenir : si tu utilises une chaîne verbatim mais que tu veux des guillemets dedans, il faut les doubler :


Console.WriteLine(@"Fichier ""config.txt"" introuvable."); // Fichier "config.txt" introuvable.
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION