Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Dans ce tutoriel, vous créez une petite application basée sur des fichiers qui imprime un résumé de commande mis en forme. Au fil du processus, vous appliquez l’interpolation de chaînes pour insérer des valeurs dans du texte, mettre en forme des nombres et des devises, aligner des colonnes et générer une sortie adaptée aux paramètres régionaux.
Ce tutoriel part du principe que vous connaissez les concepts C# de base. Pour obtenir une référence détaillée de la syntaxe d’interpolation, consultez Interpolation de chaînes.
Prerequisites
- Kit de développement logiciel (SDK) .NET 10 ou version ultérieure. Les applications basées sur des fichiers nécessitent .NET 10 ou version ultérieure.
- Un éditeur de code, tel que Visual Studio Code.
Créer l’application
Une application basée sur des fichiers est un fichier unique .cs que vous exécutez sans fichier projet. Créez un dossier pour l’application et passez-y :
mkdir StringInterpolation
cd StringInterpolation
Créez un fichier vide nommé report.cs dans ce dossier et ouvrez-le dans votre éditeur. Vous ajoutez du code à celui-ci dans les sections qui suivent, et vous exécutez l’application avec dotnet run report.cs.
Insérer des valeurs dans du texte
Préfixez un littéral de chaîne avec $ pour en faire une chaîne interpolée. À l’intérieur de la chaîne, placez n’importe quelle expression C# dans les accolades ({ et }) ; C# évalue l’expression, convertit le résultat en chaîne et l’insère.
Ajoutez le code suivant à report.cs, puis exécutez l’application avec dotnet run report.cs:
string name = "Maria";
int itemCount = 3;
// Prefix a string literal with $ to interpolate expressions inside braces.
Console.WriteLine($"Hello, {name}! You have {itemCount} items in your cart.");
// => Hello, Maria! You have 3 items in your cart.
Le résultat combine le texte littéral avec les valeurs de name et itemCount.
Format des nombres et devises
Un résumé de commande affiche l’argent et les taux, donc des nombres bruts comme 23.5 ou 0.08 semblent inachevés et difficiles à lire. Présentez chaque valeur de la façon dont un client s’attend : un prix avec un symbole monétaire et un taux d’imposition en pourcentage. Mettez-la en forme dans le cadre de l’interpolation.
Pour mettre en forme une valeur, suivez l’expression avec un signe deux-points (:) et une chaîne de format. Les chaînes de format standard C et P0 produisent des valeurs monétaires et des pourcentages sans décimales. Ajoutez le code suivant à la fin du fichier :
decimal subtotal = 23.5m;
decimal taxRate = 0.08m;
// Follow an expression with :format to apply a standard or custom format string.
Console.WriteLine($"Subtotal: {subtotal:C}");
Console.WriteLine($"Tax rate: {taxRate:P0}");
Console.WriteLine($"Total: {subtotal * (1 + taxRate):C}");
// => Subtotal: $23.50
// => Tax rate: 8%
// => Total: $25.38
La chaîne de format applique les conventions de la culture actuelle, de sorte que le symbole monétaire et les séparateurs correspondent aux paramètres de l’ordinateur.
Aligner les valeurs dans des colonnes
Lorsque vous imprimez plusieurs lignes de données, des valeurs de longueurs différentes rendent les colonnes irrégulières et difficiles à parcourir. Pour aligner chaque nom et nombre sous un titre cohérent, donnez à chaque champ une largeur fixe afin que les colonnes restent droites, quelle que soit la durée de chaque valeur.
Pour définir une largeur de champ minimale, suivez l’expression avec une virgule (,) et la largeur. Une largeur positive aligne la valeur à droite ; une largeur négative l’aligne à gauche. Combinez la largeur et une chaîne de format sous la forme de {expression,width:format}. Ajoutez le code suivant pour imprimer un résumé tabulaire :
(string Name, int Quantity, decimal Price)[] orders =
[
("Espresso", 2, 3.50m),
("Cappuccino", 1, 4.25m),
("Tea", 4, 2.00m),
];
// Follow an expression with ,width to set a minimum field width.
// A positive width right-aligns; a negative width left-aligns.
foreach (var order in orders)
{
Console.WriteLine($"{order.Name,-12}{order.Quantity,3}{order.Price * order.Quantity,10:C}");
}
// => Espresso 2 $7.00
// => Cappuccino 1 $4.25
// => Tea 4 $8.00
La colonne des noms alignée à gauche et les colonnes numériques alignées à droite forment un tableau facile à lire.
Produire un contenu adapté à la culture
Une chaîne interpolée utilise la culture actuelle par défaut. Lorsque vous avez besoin d’une culture spécifique, telle qu’un format fixe pour les journaux ou un paramètre régional pour un reçu, transmettez une culture à String.Create(IFormatProvider, DefaultInterpolatedStringHandler). Ajoutez le code suivant :
decimal total = 1234.56m;
// An interpolated string uses the current culture by default.
// Use string.Create with a culture to control the formatting explicitly.
string germanReceipt = string.Create(
new CultureInfo("de-DE"), $"Gesamt: {total:C}");
string invariantLog = string.Create(
CultureInfo.InvariantCulture, $"total={total:F2}");
Console.WriteLine(germanReceipt);
Console.WriteLine(invariantLog);
// => Gesamt: 1.234,56 €
// => total=1234.56
Le reçu allemand utilise une virgule comme séparateur décimal et le symbole euro. Le journal invariant utilise un point et aucun symbole, quelle que soit la culture de l’ordinateur.
Étapes suivantes
Vous avez utilisé l’interpolation de chaîne pour insérer, mettre en forme, aligner et localiser des valeurs. Pour connaître l’ensemble complet des fonctionnalités d’interpolation, notamment les littéraux de chaîne brute, les accolades échapées et les chaînes interpolées constantes, consultez l’article sur le concept :