Exercice - Investiguer les principes de base de la mise en forme des chaînes
- 20 minutes
Dans cette unité, vous allez apprendre à mettre en forme des chaînes pour optimiser leur affichage, en particulier lorsqu’elles contiennent plusieurs variables.
Préparer votre environnement de programmation
Ce module comprend des activités pratiques qui vous guident tout au long du processus de création et d’exécution du code de démonstration. Nous vous encourageons à effectuer ces activités à l’aide de Visual Studio Code comme environnement de développement. L’utilisation de Visual Studio Code pour ces activités vous permet d’être plus à l’aise dans l’écriture et l’exécution de code dans un environnement de développement utilisé par les professionnels du monde entier.
Notes
Si vous avez suivi d’autres modules Microsoft Learn dans cette série C#, vous avez peut-être déjà créé un dossier de projet pour les exemples de code. Le cas échéant, vous pouvez ignorer la série d’étapes suivante et supprimer le code dans le fichier Project.cs qui a été utilisé dans un exercice précédent.
Ouvrez Visual Studio Code. Vous pouvez utiliser le menu Démarrer de Windows (ou une ressource équivalente pour un autre système d’exploitation) pour ouvrir Visual Studio Code.
Dans Visual Studio Code, dans le menu Fichier, sélectionnez Ouvrir un dossier.
Dans la boîte de dialogue Ouvrir un dossier, accédez au dossier Bureau Windows. Si vous conservez vos projets de code dans un autre dossier, vous pouvez utiliser cet emplacement à la place. Pour cette formation, l’important est d’avoir un emplacement facile à localiser et à mémoriser.
Dans la boîte de dialogue Ouvrir un dossier, sélectionnez Sélectionner un dossier. Si une boîte de dialogue de sécurité vous demande si vous faites confiance aux auteurs, sélectionnez Oui.
Dans le menu Terminal de Visual Studio Code, sélectionnez Nouveau Terminal. Notez qu’une invite de commandes dans le panneau Terminal affiche le chemin du dossier actif. Par exemple :
C:\Users\someuser\Desktop>À l’invite de commandes du Terminal, pour créer une application console dans un dossier spécifié, tapez dotnet new console -o ./CsharpProjects/TestProject et appuyez sur Entrée. Cette commande CLI .NET utilise un modèle de programme .NET pour créer un projet d’application console C# à l’emplacement du dossier spécifié. La commande crée les dossiers CsharpProjects et TestProject pour vous, et utilise TestProject comme nom du fichier
.csproj.Dans le panneau EXPLORATEUR, développez le dossier CsharpProjects. Vous devriez voir le dossier TestProject et deux fichiers, un fichier programme C# nommé Program.cs et un fichier projet C# nommé TestProject.csproj.
Dans le panneau EXPLORATEUR, pour voir votre fichier de code dans le panneau de l’Éditeur, sélectionnez Program.cs.
Supprimez les lignes de code existantes. Vous pouvez utiliser ce projet de console C# pour créer, générer et exécuter des exemples de code au cours de ce module.
Fermez le panneau du Terminal.
Qu’est-ce que la mise en forme composite ?
La mise en forme composite utilise des espaces réservés numérotés dans une chaîne. Au moment de l’exécution, tout ce qui se trouve entre les accolades est résolu en une valeur qui est également passée en fonction de sa position.
Cet exemple de mise en forme composite utilise une méthode intégrée Format() sur le mot clé de type de données string. Mettez à jour votre code dans l’Éditeur Visual Studio Code comme suit :
string first = "Hello";
string second = "World";
string result = string.Format("{0} {1}!", first, second);
Console.WriteLine(result);
Si vous exécutez ce code, vous observez la sortie suivante.
Hello World!
Il convient de noter quelques points importants concernant ce code.
- Les types de données et les variables d’un type de données spécifique disposent de « méthodes d’assistance » intégrées permettant de simplifier certaines tâches.
- La chaîne littérale
"{0} {1}!"forme un modèle dont les parties sont remplacées au moment de l’exécution. - Le jeton
{0}est remplacé par le premier argument qui suit le modèle de chaîne ; en d’autres termes, la valeur de la variablefirst. - Le jeton
{1}est remplacé par le deuxième argument qui suit le modèle de chaîne ; en d’autres termes, la valeur de la variablesecond.
Notes
Vous pouvez penser qu’il est étrange de commencer par le nombre 0. En fait, cela est très courant dans le développement de logiciel. Chaque fois qu’une séquence d’éléments peut être identifiée à l’aide d’un nombre, la numérotation commence généralement à 0.
Mettez le code à jour comme suit :
string first = "Hello"; string second = "World"; Console.WriteLine("{1} {0}!", first, second); Console.WriteLine("{0} {0} {0}!", first, second);Enregistrez votre fichier de code, puis utilisez Visual Studio Code pour exécuter votre code. Vous devez normalement voir la sortie suivante.
World Hello! Hello Hello Hello!
Voici quelques observations concernant ces exemples :
- Pour la première instruction
Console.WriteLine(), notez que les jetons peuvent être organisés dans n’importe quel ordre. L’exemple de code a{1}avant{0}. - Pour la deuxième instruction
Console.WriteLine(), notez que les jetons peuvent être réutilisés avec trois instances de{0}. En outre, le deuxième argument de variable,second, n’est pas utilisé. Pourtant, le code s’exécute toujours sans erreur.
Qu’est-ce que l’interpolation de chaîne ?
L’interpolation de chaîne est une technique qui simplifie la mise en forme composite.
Au lieu d’utiliser un jeton numéroté et d’inclure la valeur littérale ou le nom de la variable dans une liste d’arguments dans String.Format() ou Console.WriteLine(), vous pouvez simplement utiliser le nom de la variable à l’intérieur des accolades.
Pour qu’une chaîne soit interpolée, vous devez la faire précéder de la directive
$. Créez à présent les mêmes exemples que précédemment avec l’interpolation de chaîne au lieu de la mise en forme composite. Mettez le code à jour comme suit :string first = "Hello"; string second = "World"; Console.WriteLine($"{first} {second}!"); Console.WriteLine($"{second} {first}!"); Console.WriteLine($"{first} {first} {first}!");Enregistrez votre fichier de code, puis utilisez Visual Studio Code pour exécuter votre code. Vous devez normalement voir la sortie suivante.
Hello World! World Hello! Hello Hello Hello!
Notes
Si vous examinez des exemples de code présentés dans des manuels et en ligne, vous constaterez probablement que les techniques de mise en forme composite et d’interpolation de chaîne sont toutes deux utilisées. Toutefois, il est généralement conseillé de choisir l’interpolation de chaîne.
Mise en forme de valeurs monétaires
La mise en forme composite et l’interpolation de chaîne peuvent être utilisées pour mettre en forme des valeurs en vue d’un affichage en fonction d’une langue et d’une culture spécifiques. Dans l’exemple suivant, le spécificateur de format monétaire :C est utilisé pour afficher les variables price et discount sous forme de valeurs monétaires. Mettez le code à jour comme suit :
decimal price = 123.45m;
int discount = 50;
Console.WriteLine($"Price: {price:C} (Save {discount:C})");
Si vous avez exécuté ce code sur un ordinateur dont la langue d’affichage Windows est définie sur « Anglais (États-Unis) », vous obtenez la sortie suivante.
Price: $123.45 (Save $50.00)
Notez la façon dont l’ajout de :C aux jetons à l’intérieur des accolades met en forme le nombre en tant que valeur monétaire, que vous utilisiez int ou decimal.
Notes
Que se passe-t-il si votre pays/région et votre langue ne sont pas connus ? Si vous exécutez le code précédent dans l’éditeur .NET « dans le navigateur », par exemple sur TrydotNet, vous obtenez la sortie suivante : Price: ¤123.45 (Save ¤50.00). Le symbole ¤ est utilisé à la place du symbole monétaire de votre pays/région. Il s’agit d’un symbole générique utilisé pour désigner la « devise », quel que soit le type de la devise. Ce symbole s’affiche dans l’éditeur .NET car il ignore votre emplacement actuel.
Comment le pays/la région et la langue de l’utilisateur affectent la mise en forme des chaînes
Que se passe-t-il si vous exécutez le code précédent sur un ordinateur se trouvant en France avec l’option Langue d’affichage de Windows définie sur Français ? Dans ce cas, la sortie suivante s’afficherait.
Price: 123,45 € (Save 50,00 €)
La sortie précédente affiche « € » parce que la fonctionnalité de mise en forme monétaire de la chaîne dépend du paramètre culture de l’ordinateur local. Dans ce contexte, le terme « culture » désigne le pays/la région et la langue de l’utilisateur final. Le code de culture est une chaîne de cinq caractères utilisée par les ordinateurs pour identifier la localisation et la langue de l’utilisateur final. Le code de culture garantit que certaines informations telles que les dates et la devise sont présentées correctement.
Par exemple :
- Le code de culture d’un utilisateur anglophone aux États-Unis est
en-US. - Le code de culture d’un utilisateur francophone en France est
fr-FR. - Le code de culture d’un utilisateur francophone au Canada est
fr-CA.
La culture affecte le système d’écriture, le calendrier utilisé, l’ordre de tri des chaînes, ainsi que la mise en forme des dates et des nombres (comme la mise en forme de valeurs monétaires).
Malheureusement, il est difficile de vérifier que votre code fonctionne correctement sur tous les ordinateurs, quel que soit le pays/la région ou la langue de l’utilisateur final. Ce processus est appelé localisation (ou globalisation). La localisation dépend de nombreux facteurs non abordés dans ce module. Pour simplifier, la syntaxe de mise en forme de chaîne peut utiliser un format différent en fonction de la culture de l’utilisateur.
Mise en forme des nombres
Quand vous utilisez des données numériques, vous pouvez souhaiter mettre en forme le nombre pour une meilleure lisibilité en incluant des virgules afin de délimiter les milliers, les millions, les milliards, etc.
Le spécificateur de format numérique N rend les nombres plus lisibles. Mettez le code à jour comme suit :
decimal measurement = 123456.78912m;
Console.WriteLine($"Measurement: {measurement:N} units");
Si vous examinez ceci avec la culture en-US, vous observez la sortie suivante.
Measurement: 123,456.79 units
Par défaut, le spécificateur de format numérique N affiche uniquement deux chiffres après le séparateur décimal.
Si vous voulez afficher plus de précision, vous pouvez le faire en ajoutant un nombre après le spécificateur. Le code suivant affiche quatre chiffres après le séparateur décimal à l’aide du spécificateur N4. Mettez le code à jour comme suit :
decimal measurement = 123456.78912m;
Console.WriteLine($"Measurement: {measurement:N4} units");
Si vous examinez ceci avec la culture en-US, vous observez la sortie suivante.
Measurement: 123,456.7891 units
Mise en forme des pourcentages
Utilisez le spécificateur de format P pour mettre en forme les pourcentages et les arrondir à 2 décimales. Faites-le suivre d’un nombre pour contrôler le nombre de valeurs affichées après le séparateur décimal. Mettez le code à jour comme suit :
decimal tax = .36785m;
Console.WriteLine($"Tax rate: {tax:P2}");
Si vous examinez ceci avec la culture en-US, vous observez la sortie suivante.
Tax rate: 36.79%
Combinaison d’approches de mise en forme
Les variables de chaîne peuvent stocker des chaînes créées à l’aide de techniques de mise en forme. Dans l’exemple suivant, les décimales et les résultats mathématiques décimaux sont mis en forme et stockés dans la chaîne yourDiscount à l’aide d’une mise en forme composite.
Mettez à jour votre code comme suit.
decimal price = 67.55m;
decimal salePrice = 59.99m;
string yourDiscount = String.Format("You saved {0:C2} off the regular {1:C2} price. ", (price - salePrice), price);
Console.WriteLine(yourDiscount);
Si vous examinez ceci avec la culture en-US, vous observez la sortie suivante.
You saved $7.56 off the regular $67.55 price.
Vous pouvez combiner plusieurs chaînes mises en forme. En partant du code précédent, concaténez le pourcentage calculé à l’aide de l’interpolation de chaîne au lieu de la concaténation de chaîne en insérant yourDiscount += $"A discount of {(price - salePrice)/price:P2}!"; dans le code sur la ligne avant Console.WriteLine().
Notes
Vous n’avez pas besoin d’utiliser String.Format() avec cette approche d’interpolation de chaîne.
Mettez à jour votre code comme suit.
decimal price = 67.55m;
decimal salePrice = 59.99m;
string yourDiscount = String.Format("You saved {0:C2} off the regular {1:C2} price. ", (price - salePrice), price);
yourDiscount += $"A discount of {((price - salePrice)/price):P2}!"; //inserted
Console.WriteLine(yourDiscount);
Si vous examinez cette unité avec la culture en-US, vous observez la sortie suivante.
You saved $7.56 off the regular $67.55 price. A discount of 11.19%!
Récapitulatif
Voici les points les plus importants à retenir de cette unité concernant la mise en forme des chaînes :
- Vous pouvez utiliser la mise en forme composite ou l’interpolation de chaîne pour mettre en forme des chaînes.
- Avec la mise en forme composite, vous utilisez un modèle de chaîne contenant un ou plusieurs jetons de remplacement sous la forme
{0}. Vous fournissez également une liste d’arguments qui sont mis en correspondance avec les jetons de remplacement selon leur ordre. La mise en forme composite fonctionne quand vous utilisezstring.Format()ouConsole.WriteLine(). - Avec l’interpolation de chaîne, vous utilisez un modèle de chaîne contenant les noms de variables qui doivent être remplacés, placés entre accolades. Utilisez la directive
$devant le modèle de chaîne pour indiquer que vous voulez que la chaîne soit interpolée. - Mettez en forme les valeurs monétaires à l’aide d’un spécificateur
:C. - Mettez en forme les nombres à l’aide d’un spécificateur
:N. Contrôlez la précision (nombre de valeurs après le séparateur décimal) en plaçant un nombre après le:N; par exemple,{myNumber:N3}. - Mettez en forme les pourcentages à l’aide du spécificateur de format
:P. - La mise en forme des valeurs monétaires et des nombres dépend de la culture de l’utilisateur final, un code de cinq caractères qui comprend le pays/la région et la langue de l’utilisateur (conformément aux paramètres définis sur son ordinateur).