DevTrain

Autor: Hannes Preishuber

Formatieren von Variablen in .NET

Eine nervige Aufgabe ist das Formatieren von Variablen für den passenden Zweck. Sei es um führende Nullen zu generieren oder das richtige Datumsformat. Es gibt zwar Hilfsfunktionen wie FormatNumber oder FormatCurrency in VB oder auch cint oder cLng. Diese sind aber in jeder Programmiersprache anders bzw gar nicht vorhanden.
In .NET leiten sich nun alle Datentypen von System.Object ab und sind auch Objekte. So haben diese Datentypen gleich ihre eigenen Methoden. Praktischerweise ist auch ein Format Funktion darunter die von jeder Sprache aus genutzt werden kann.
Ich will nicht weiter auf die Datentypen eingehen, dies findet sich an anderer Stelle wieder.

Gehen wir von einem typischen VB Code aus

a = CStr(FormatDateTime(now))

Wenn man mit dem Migrations Tool von VB7 die Konvertierung durchführt erhält man folgendes Ergebnis.

a = CStr(FormatDateTime(now, Microsoft.VisualBasic.DateFormat.ShortDate))

Das ist natürlich Sub optimal. Gezeigt wird hier anhand von VB 7 wie dies im .NET Umfeld gelöst ist. Nebenbei können Puristen die "Rückkehr der Commdandline" feiern.

Sub Main()
        Dim a As Date
        a = #1/31/2001#
        Dim b As String
        b = a.Format("D", Nothing)
        console.Write(b)
        console.ReadLine()
End Sub

Die entscheidende Stelle ist wo der Variablen b der formatierte Datumswert zugewiesen wird. Die Console Befehle werden zur Ausgabe bzw Readline zum Anhalten benutzt. Mit Drücken der Return Taste schliesst sich das Command Fenster.

Die Ausgabe von obiger Funktion ist

"Mittwoch, 31. Januar 2001"

Die möglichen Formatierungspatterns für Datum sind

d                  08/17/2000
D                  Thursday, August 17, 2000
f                  Thursday, August 17, 2000 16:32
F                  Thursday, August 17, 2000 16:32:32
g                  08/17/2000 16:32
G                  08/17/2000 16:32:32
m                  August 17
r                  Thu, 17 Aug 2000 23:32:32 GMT
s                  2000-08-17T16:32:32
t                  16:32
T                  16:32:32
u                  2000-08-17 23:32:32Z
U                  Thursday, August 17, 2000 23:32:32
y                  August, 2000
dddd, MMMM dd yyyy Thursday, August 17 2000
ddd, MMM d "'"yy   Thu, Aug 17 '00
dddd, MMMM dd      Thursday, August 17
M/yy               8/00
dd-MM-yy           17-08-00

Es gibt darüberhinaus noch einige Sonderzeichen wie %. Dessen Bedeutung schlagen Sie am besten in der Online Doku nach.
Obwohl es vom Thema leicht abschweift, möchte ich kurz auf eine Formatierung eines Strings eingehen. So gibt es auch Regular Expressions um zb im Write einen oder mehr Parameter einzufügen.

Console.WriteLine("Das ist der Wert: {0}.", datum)

Sie können auch direkt die Formatierung des Datentyps verwenden ohnen erst eine Variable zu instanzieren. Für jeden Datentyp gibt es eigene Zeichensätze so z.B. für Zahlen. Mit "c" erzeugen Sie so eine Währungsformatierung die wieder den Systemeinstellungen entspricht.

d = Double.Format(1299.34, "c")
console.WriteLine("Test: {0}", d)

Damit erhalten Sie auf einer "deutschen" Maschine entsprechen der üblichen Schreibweise:
Test:  1.299,94 DM

Die weiteren Formatierungspatterns als Liste ausgehend von 1299,9425

c    1.299,94 DM
d    1299
e    1,299943e+003
f    1299,94
g    1299,9425
n    1.299,94
x    44e
#    1300
###  1300
#.00 1299,99
%#   %1300   ( ausgangswert 12,999425)
D4   0012    (ausgangswert 12)


Abschliessend möchte ich ihnen noch empfehlen, sich auch mit Regular Expresions vertraut zu machen. Es gibt auch noch eine Menge anderer Konvertierungsfunktione wie Parse, die Sie sich ansehen sollten.

 

 

 


Erfasst am: 24.04.2001 - Artikel-URL: http://www.devtrain.de/news.aspx?artnr=432
© Copyright 2003 ppedv AG - http://www.ppedv.de