CodeGym /Cours /C# SELF /Interpolation de chaînes avancée

Interpolation de chaînes avancée

C# SELF
Niveau 9 , Leçon 2
Disponible

1. On se rappelle l'interpolation de chaînes

Assez souvent, on a besoin non seulement d'afficher une chaîne, mais aussi d'y insérer des valeurs de variables. Avant, pour ça, on utilisait soit la concaténation (+), soit la méthode string.Format. Mais depuis que la magie est arrivée en C# — l'interpolation de chaînes (string interpolation), — la vie est devenue carrément plus cool.

Comment marche l'interpolation de chaînes

Ajoute le symbole $ devant la chaîne, et à l'intérieur utilise des accolades {} pour insérer des variables ou même des expressions entières.

Comparaison de l'ancien et du nouveau style d'affichage avec des variables

string name = "Anna";
int age = 24;

Console.WriteLine("Je m'appelle " + name + ", j'ai " + age + " ans."); // Ancien style
Console.WriteLine($"Je m'appelle {name}, j'ai {age} ans."); // Nouveau style !

Tu peux insérer direct des calculs et des expressions :


int a = 5, b = 10;
Console.WriteLine($"La somme {a} + {b} = {a + b}");

2. Comment marche l'interpolation de chaînes

On met $ devant la chaîne, et les variables ou expressions sont entourées d'accolades {} :


string name = "Anna";
int age = 24;

Console.WriteLine($"Je m'appelle {name}, j'ai {age} ans.");
  • Tout ce qui est en dehors des accolades — c'est juste du texte.
  • Tout ce qui est à l'intérieur des accolades est interprété comme du code C# : ça peut être un nom de variable, de l'arithmétique, un appel de méthode, etc.

Calculs et expressions direct dans la chaîne

L'interpolation ne se limite pas aux variables simples ! Voilà ce que tu peux faire :

Expressions arithmétiques
int pommes = 7;
int poires = 5;
Console.WriteLine($"J'ai au total {pommes + poires} fruits."); // 12
Opérations avec des chaînes et des méthodes
string ville = "Budapest";
Console.WriteLine($"Ville en majuscules : {ville.ToUpper()}"); // BUDAPEST
Opérateurs ternaires, conditions
int note = 90;
Console.WriteLine($"Note : {(note >= 60 ? "validé" : "non validé")}");
Appels de méthodes
string FormatUser(string name, int age) => $"{name} ({age})";
Console.WriteLine($"Utilisateur : {FormatUser("Eva", 19)}"); // Utilisateur : Eva (19)
Travailler avec des tableaux et des collections
int[] nombres = { 3, 5, 7 };
Console.WriteLine($"Somme : {nombres.Sum()}");
Console.WriteLine($"Éléments : {string.Join(", ", nombres)}");
Expressions imbriquées et constructions complexes
var user = new { Name = "Oleg", Role = "Admin" };
Console.WriteLine($"Nom : {user.Name}, rôle : {(user.Role == "Admin" ? "administrateur" : "utilisateur")}");
À noter :

les expressions dans les accolades doivent rester courtes et lisibles. Si la logique est complexe — mieux vaut la calculer avant et insérer une variable prête.

Expressions à plusieurs niveaux
var etudiant = new { Name = "Sacha", Info = new { Age = 21, Uni = "Harvard" } };
Console.WriteLine($"Nom : {etudiant.Name}, université : {etudiant.Info.Uni}");
Conversions de types à la volée
double prix = 19.99;
int quantite = 3;
Console.WriteLine($"Prix total : {prix * quantite} euros");
Date et heure — direct au bon format
DateTime now = DateTime.Now;
Console.WriteLine($"Aujourd'hui : {now.Day}.{now.Month}.{now.Year}");
Exemple avec une boucle
var jours = new[] { "Lun", "Mar", "Mer" };
Console.WriteLine($"Jours de la semaine : {string.Join(", ", jours)}");

3. Formatage dans l'interpolation

Souvent, c'est important d'afficher joliment des nombres, des dates, des devises ou des pourcentages.
L'interpolation permet de préciser le format direct dans les accolades — après les deux-points.

Syntaxe générale : {expression:format}

Formatage des nombres

double num = 1234.5678;
Console.WriteLine($"Arrondi : {num:F2}");     // 1234.57
Console.WriteLine($"En forme exponentielle : {num:E1}"); // 1.2E+003
Console.WriteLine($"Avec séparateur de milliers : {num:N}"); // 1 234,57 (dépend de la culture)

Exemples de formats :

  • F2 — deux chiffres après la virgule
  • N0 — séparateur de milliers, 0 chiffre après la virgule
  • E1 — format exponentiel, 1 chiffre après le point
  • P0 — pourcentage, 0 chiffre après le point
double ratio = 0.1234;
Console.WriteLine($"Pourcentage : {ratio:P1}"); // 12,3 %

Formatage des dates

DateTime d = new DateTime(2025, 6, 18, 15, 42, 0);
Console.WriteLine($"Date : {d:dd.MM.yyyy}");         // 18.06.2025
Console.WriteLine($"Heure : {d:HH:mm}");             // 15:42
Console.WriteLine($"ISO : {d:yyyy-MM-ddTHH:mm:ss}"); // 2025-06-18T15:42:00

Résumé des formats de date :

  • dd — jour (2 chiffres)
  • MM — mois
  • yyyy — année
  • HH:mm — heures:minutes (24h)
  • d — date courte selon la culture
  • D — date longue

Formatage des devises et de l'argent

decimal cout = 2999.5m;
Console.WriteLine($"Prix : {cout:C}"); // 2,999.50 $  (dépend de la culture)

Alignement et remplissage

Tu peux définir la largeur du champ, aligner à droite ou à gauche :

int val = 7;
Console.WriteLine($"[{val,5}]");  // [    7] — à droite
Console.WriteLine($"[{val,-5}]"); // [7    ] — à gauche

Combiner les formats

DateTime dt = DateTime.Now;
Console.WriteLine($"Aujourd'hui {dt:dddd, dd MMMM yyyy}, heure {dt:HH:mm}");

Interpolation avec différents types de données

bool ok = true;
Console.WriteLine($"Opération {(ok ? "réussie" : "erreur")}");

Chaînes multilignes avec interpolation

Récemment, on a aussi eu les raw string literals et les chaînes multilignes interpolées :

string user = "Timour";
int score = 100;

Console.WriteLine($"""
    Félicitations, {user} !
    Ton score : {score}
    """);

Interpolation imbriquée et calculs

Tu peux appeler des méthodes, formater leur résultat et l'insérer dans la chaîne :

double[] temps = { 23.4, 25.1, 21.9 };
Console.WriteLine($"Température moyenne : {temps.Average():F1}°C");

Exemple avec un tableau (alignement + format)

Formatage et alignement dans un tableau avec interpolation

double[] prix = { 123.4, 8.9, 5643.0 };
for (int i = 0; i < prix.Length; i++)
    Console.WriteLine($"Produit {i + 1}: {prix[i],10:F2} euros");

Résultat :

Produit 1:    123.40 euros
Produit 2:      8.90 euros
Produit 3:   5643.00 euros

4. Échappement et interpolation ensemble

Tu peux utiliser des caractères échappés et l'interpolation en même temps :

string user = "Macha";
Console.WriteLine($"Salut, \"{user}\"!\nRavi de faire ta connaissance.");

Affichage :

Salut, "Macha"!
Ravi de faire ta connaissance.

Si tu combines ça avec les chaînes littérales, tu mets d'abord $, puis @ (tu peux aussi faire l'inverse — c'est pareil) :

string chemin = "C:\\Temp";
Console.WriteLine($@"Fichier trouvé à l'adresse : ""{chemin}""");
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION