Übung: Untersuchen der Grundlagen der Zeichenfolgenformatierung
- 20 Minuten
In dieser Lerneinheit erfahren Sie mehr zu den Methoden zum Formatieren von Zeichenfolgen für eine effiziente Anzeige, insbesondere für Fälle, die mehrere Variablen verwenden.
Vorbereiten Ihrer Programmierumgebung
Dieses Modul enthält praktische Aktivitäten, die Sie durch den Prozess der Erstellung und Ausführung von Demonstrationscode führen. Es wird empfohlen, diese Aktivitäten mit Visual Studio Code als Entwicklungsumgebung durchzuführen. Die Verwendung von Visual Studio Code für diese Aktivitäten vereinfacht das Schreiben und Ausführen von Code in einer Entwicklerumgebung, die von Expert*innen weltweit verwendet wird.
Hinweis
Wenn Sie schon andere Microsoft Learn-Module in dieser C#-Reihe abgeschlossen haben, haben Sie möglicherweise bereits einen Projektordner für Codebeispiele erstellt. In diesem Fall können Sie den folgenden Abschnitt überspringen und den Code in der Datei Project.cs aus der vorherigen Übung löschen.
Öffnen Sie Visual Studio Code. Sie können das Windows-Startmenü (oder eine entsprechende Ressource für ein anderes Betriebssystem) verwenden, um Visual Studio Code zu öffnen.
Klicken Sie im Visual Studio Code-Menü Datei auf Ordner öffnen.
Navigieren Sie im Dialogfeld Ordner öffnen zum Windows-Ordner „Desktop“. Wenn Sie Codeprojekte in der Regel in einem anderen Ordner speichern, können Sie stattdessen auch diesen verwenden. Für diese Schulung ist es wichtig, einen Speicherort zu verwenden, den Sie leicht finden und sich gut merken können.
Klicken Sie im Dialogfeld Ordner öffnen auf Ordner auswählen. Wenn ein Sicherheitsdialogfeld angezeigt wird, in dem Sie gefragt werden, ob Sie den Autor*innen vertrauen, wählen Sie Ja aus.
Klicken Sie im Visual Studio Code-Menü Terminal die Option Neues Terminal aus. Beachten Sie, dass eine Eingabeaufforderung im Panel „Terminal“ den Ordnerpfad für den aktuellen Ordner anzeigt. Beispiel:
C:\Users\someuser\Desktop>Geben Sie an der Terminal-Eingabeaufforderung dotnet new console -o ./CsharpProjects/TestProject ein, um eine neue Konsolenanwendung in einem angegebenen Ordner zu erstellen, und drücken Sie dann die EINGABETASTE. Dieser .NET-CLI-Befehl verwendet eine .NET-Programmvorlage, um ein neues C#-Konsolenanwendungsprojekt am angegebenen Ordnerspeicherort zu erstellen. Der Befehl erstellt die Ordner „CsharpProjects“ und „TestProject“ für Sie und verwendet „TestProject“ als Namen für die
.csproj-Datei.Erweitern Sie im Panel „Explorer“ den Ordner CsharpProjects. Nun sollten der Ordner TestProject und zwei Dateien (eine C#-Programmdatei namens Program.cs und eine C#-Projektdatei namens TestProject.csproj) angezeigt werden.
Wählen Sie im Panel „Explorer“ Program.cs aus, um Ihre Codedatei im Editor-Panel anzuzeigen.
Löschen Sie die vorhandenen Codezeilen. Sie verwenden dieses C#-Konsolenprojekt zum Erstellen und Ausführen von Codebeispielen im Rahmen dieses Moduls.
Schließen Sie das Panel „Terminal“.
Was ist die zusammengesetzte Formatierung?
Die zusammengesetzte Formatierung verwendet nummerierte Platzhalter innerhalb einer Zeichenfolge. Zur Laufzeit wird alles innerhalb der geschweiften Klammern zu einem Wert aufgelöst, der basierend auf ihrer Position ebenfalls übergeben wird.
Dieses Beispiel für eine zusammengesetzte Formatierung verwendet eine integrierte Methode Format() auf dem Schlüsselwort des string-Datentyps. Aktualisieren Sie Ihren Code im Visual Studio Code-Editor wie folgt:
string first = "Hello";
string second = "World";
string result = string.Format("{0} {1}!", first, second);
Console.WriteLine(result);
Wenn Sie diesen Code ausführen, erhalten Sie die folgende Ausgabe.
Hello World!
Bei diesem Code sind einige wichtige Punkte zu beachten.
- Datentypen und Variablen eines bestimmten Datentyps verfügen über integrierte „Hilfsmethoden“, um bestimmte Aufgaben zu vereinfachen.
- Die Literalzeichenfolge
"{0} {1}!"bildet eine Vorlage, von der Teile zur Laufzeit ersetzt werden. - Das Token
{0}wird durch das erste Argument nach der Zeichenfolgenvorlage ersetzt, also durch den Wert der Variablenfirst. - Das Token
{1}wird durch das zweite Argument nach der Zeichenfolgenvorlage ersetzt, also durch den Wert der Variablensecond.
Hinweis
Es mag Ihnen vielleicht seltsam vorkommen, mit der Zahl 0 (Null) zu beginnen. Tatsächlich ist dies bei der Softwareentwicklung sehr üblich. Wenn eine Sequenz von Elementen vorhanden ist, die mit einer Zahl identifiziert werden können, beginnt die Nummerierung in der Regel bei 0.
Aktualisieren Sie den Code wie folgt:
string first = "Hello"; string second = "World"; Console.WriteLine("{1} {0}!", first, second); Console.WriteLine("{0} {0} {0}!", first, second);Speichern Sie Ihre Codedatei, und führen Sie Ihren Code dann mit Visual Studio Code aus. Die folgende Ausgabe wird angezeigt.
World Hello! Hello Hello Hello!
Einige Beobachtungen zu diesen Beispielen:
- In der ersten
Console.WriteLine()-Anweisung können Sie beobachten, dass die Token in beliebiger Reihenfolge angeordnet werden können. Der Beispielcode enthält{1}vor{0}. - Beachten Sie für die zweite
Console.WriteLine()-Anweisung, dass die Token mit drei Instanzen von{0}wiederverwendet werden können. Außerdem wird das zweite Variablenargument,second, nicht verwendet. Der Code wird jedoch weiterhin ohne Fehler ausgeführt.
Was versteht man unter Zeichenfolgeninterpolation?
Die Zeichenfolgeninterpolation ist ein Verfahren, das die zusammengesetzte Formatierung vereinfacht.
Anstatt ein nummeriertes Token zu verwenden und den literalen Wert oder Variablennamen in einer Liste von Argumenten für String.Format() oder Console.WriteLine() einzuschließen, können Sie einfach den Variablennamen innerhalb der geschweiften Klammern verwenden.
Damit eine Zeichenfolge interpoliert werden kann, müssen Sie ihr die Anweisung
$voranstellen. Bilden Sie nun die gleichen Beispiele von vorhin für die Verwendung von Zeichenfolgeninterpolation anstelle von zusammengesetzter Formatierung nach. Aktualisieren Sie den Code wie folgt:string first = "Hello"; string second = "World"; Console.WriteLine($"{first} {second}!"); Console.WriteLine($"{second} {first}!"); Console.WriteLine($"{first} {first} {first}!");Speichern Sie Ihre Codedatei, und führen Sie Ihren Code dann mit Visual Studio Code aus. Die folgende Ausgabe wird angezeigt.
Hello World! World Hello! Hello Hello Hello!
Hinweis
Wenn Sie sich Codebeispiele in Büchern und online ansehen, finden Sie wahrscheinlich sowohl die zusammengesetzte Formatierung als auch die Zeichenfolgeninterpolation, aber im Allgemeinen sollten Sie die Zeichenfolgeninterpolation auswählen.
Formatierung von Währungen
Die zusammengesetzte Formatierung und Zeichenfolgeninterpolationen können verwendet werden, um Werte für die Anzeige in einer bestimmten Sprache und Kultur zu formatieren. Im folgenden Beispiel wird der Währungsformatbezeichner :C verwendet, um die price- und discount-Variablen als Währung darzustellen. Aktualisieren Sie den Code wie folgt:
decimal price = 123.45m;
int discount = 50;
Console.WriteLine($"Price: {price:C} (Save {discount:C})");
Wenn Sie diesen Code auf einem Computer ausführen, dessen Windows-Anzeigesprache auf „Englisch (USA)“ festgelegt ist, werden Sie die folgende Ausgabe erhalten.
Price: $123.45 (Save $50.00)
Beachten Sie, dass die Zahl als Währung formatiert wird, wenn Sie innerhalb der geschweiften Klammern :C zum Token hinzufügen, unabhängig davon, ob Sie dabei int oder decimal verwenden.
Hinweis
Was geschieht, wenn Ihr Land bzw. Ihre Region und Sprache nicht bekannt sind? Wenn Sie den vorherigen Code im „browserinternen“ .NET-Editor ausführen, z. B. unter TrydotNet, wird die folgende Ausgabe angezeigt: Price: ¤123.45 (Save ¤50.00). Das Symbol ¤ wird anstelle des Symbols für die Währung Ihres Landes/Ihrer Region verwendet. Dabei handelt es sich um ein allgemeines Symbol für die Bezeichnung einer Währung, unabhängig von deren Art. Ihnen wird dieses Symbol im .NET-Editor angezeigt, da dieser nicht auf Ihren aktuellen Standort Rücksicht nimmt.
Auswirkungen des Landes/der Region und der Sprache des Benutzers bzw. der Benutzerin auf die Zeichenfolgenformatierung
Was geschieht, wenn Sie den vorherigen Code auf einem Computer in Frankreich ausführen, dessen Windows-Anzeigesprache auf Französisch festgelegt ist? In diesem Fall wird die folgende Ausgabe angezeigt.
Price: 123,45 € (Save 50,00 €)
Der Grund für die vorherige Ausgabe von „€“ ist, dass das Feature für die Zeichenfolgenformatierung für Währungen von der Einstellung des lokalen Computers für Kultur abhängig ist. In diesem Kontext bezieht sich der Begriff „Kultur“ auf das Land/die Region und die Sprache des Endbenutzers. Der Kulturcode ist eine Zeichenfolge mit fünf Zeichen, die von Computern verwendet wird, um den Standort und die Sprache von Endbenutzer*innen zu identifizieren. Durch den Kulturcode wird sichergestellt, dass bestimmte Informationen wie Datumsangaben und Währungen ordnungsgemäß dargestellt werden.
Beispiel:
- Der Kulturcode eines englischsprachigen Benutzers in den USA ist
en-US. - Der Kulturcode eines französischsprachigen Benutzers in Frankreich ist
fr-FR. - Der Kulturcode eines französischsprachigen Benutzers in Kanada ist
fr-CA.
Die Kultur wirkt sich auf das Schreibsystem, den verwendeten Kalender, die Sortierreihenfolge von Zeichenfolgen und die Formatierung von Datumsangaben und Ziffern (z. B. die Formatierung der Währung) aus.
Leider ist es nicht einfach, sicherzustellen, dass Ihr Code auf allen Computern unabhängig vom Land/von der Region und der Sprache des Endbenutzers ordnungsgemäß funktioniert. Dieser Prozess wird als Lokalisierung (oder Globalisierung) bezeichnet. Die Lokalisierung hängt von vielen Faktoren ab, die in diesem Modul nicht behandelt werden, aber einfach ausgedrückt könnte die Syntax der Zeichenfolgenformatierung je nach Kultur des Benutzers ein anderes Format verwenden.
Formatieren von Zahlen
Beim Arbeiten mit numerischen Daten sollten Sie die Zahl aus Gründen der Lesbarkeit formatieren, indem Sie Kommas einfügen, um Tausende, Millionen, Milliarden usw. abzugrenzen.
Der numerische Formatbezeichner N macht Zahlen besser lesbar. Aktualisieren Sie den Code wie folgt:
decimal measurement = 123456.78912m;
Console.WriteLine($"Measurement: {measurement:N} units");
Wenn Sie dies in der en-US-Kultur anzeigen, beobachten Sie die folgende Ausgabe:
Measurement: 123,456.79 units
Standardmäßig zeigt der numerische Formatbezeichner N nur zwei Ziffern nach dem Dezimaltrennzeichen an.
Wenn Sie eine genauere Anzeige wünschen, können Sie nach dem Spezifizierer eine Zahl hinzufügen. Der folgende Code zeigt mithilfe des N4-Spezifizierers vier Ziffern nach dem Dezimaltrennzeichen an. Aktualisieren Sie den Code wie folgt:
decimal measurement = 123456.78912m;
Console.WriteLine($"Measurement: {measurement:N4} units");
Wenn Sie dies in der en-US-Kultur anzeigen, beobachten Sie die folgende Ausgabe:
Measurement: 123,456.7891 units
Formatieren von Prozentsätzen
Verwenden Sie den Formatbezeichner P, um Prozentsätze zu formatieren und auf zwei Dezimalstellen zu runden. Fügen Sie anschließend eine Zahl hinzu, um die Anzahl der nach dem Dezimaltrennzeichen angezeigten Werte zu steuern. Aktualisieren Sie den Code wie folgt:
decimal tax = .36785m;
Console.WriteLine($"Tax rate: {tax:P2}");
Wenn Sie dies in der en-US-Kultur anzeigen, beobachten Sie die folgende Ausgabe:
Tax rate: 36.79%
Kombinieren von Formatierungsansätzen
Zeichenfolgenvariablen können Zeichenfolgen speichern, die mit Formatierungstechniken erstellt wurden. Im folgenden Beispiel werden Dezimalzahlen und dezimale mathematische Ergebnisse formatiert und in der Zeichenfolge yourDiscount mit zusammengesetzter Formatierung gespeichert.
Aktualisieren Sie den Code wie folgt.
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);
Wenn Sie dies in der en-US-Kultur anzeigen, beobachten Sie die folgende Ausgabe:
You saved $7.56 off the regular $67.55 price.
Sie können mehrere formatierte Zeichenfolgen kombinieren. Bauen Sie auf dem vorherigen Code auf, der den berechneten Prozentsatz mithilfe der Zeichenfolgeninterpolation anstelle der Zeichenfolgenverkettung verkettet, indem Sie yourDiscount += $"A discount of {(price - salePrice)/price:P2}!"; in den Code in der Zeile vor Console.WriteLine() einfügen.
Hinweis
Sie müssen String.Format() nicht mit dieser Zeichenfolgeninterpolationsansatz verwenden.
Aktualisieren Sie den Code wie folgt.
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);
Wenn Sie diese Einheit in der en-US-Kultur anzeigen, beobachten Sie die folgende Ausgabe.
You saved $7.56 off the regular $67.55 price. A discount of 11.19%!
Zusammenfassung
Im Folgenden finden Sie die wichtigsten wesentlichen Punkte dieser Lerneinheit über die Zeichenfolgenformatierung:
- Sie können zusammengesetzte Formatierung oder Zeichenfolgeninterpolation verwenden, um Zeichenfolgen zu formatieren.
- Mit der zusammengesetzten Formatierung verwenden Sie eine Zeichenfolgenvorlage, die ein oder mehrere Ersetzungstoken in der Form von
{0}enthält. Außerdem geben Sie eine Liste von Argumenten an, die auf Grundlage ihrer Reihenfolge mit den Ersetzungstoken übereinstimmen. Die kombinierte Formatierung funktioniert, wenn Siestring.Format()oderConsole.WriteLine()verwenden. - Mit der Zeichenfolgeninterpolation verwenden Sie eine Zeichenfolgenvorlage, die jene Variablennamen in geschweiften Klammern enthalten, die Sie ersetzen möchten. Verwenden Sie die
$-Direktive vor der Zeichenfolgenvorlage, um anzugeben, dass die Zeichenfolge interpoliert werden soll. - Formatieren Sie die Währung mit einem
:C-Spezifizierer. - Formatieren Sie Zahlen mit einem
:N-Spezifizierer. Steuern Sie die Genauigkeit (die Anzahl der Werte nach dem Dezimaltrennzeichen) mithilfe einer Zahl nach:N, z. B.{myNumber:N3}. - Formatieren Sie die Prozentsätze mit dem Formatbezeichner
:P. - Die Formatierung der Währung und Zahlen hängt von der Kultur des Endbenutzers ab, einem fünfstelligen Zeichencode, der das Land/die Region und die Sprache des Benutzers (gemäß den Einstellungen auf seinem Computer) enthält.