| 

.NET C# Java Javascript Exception

2
Moinsen,

Ich muss aus C# für alle im System vorhandenen CultureInfo Objekte die Währungsformate exportieren. Es ist auch grundsätzlich kein Problem alle Cultures durchzugehen und die NumberFormatInfo Objekte zu bekommen.

Aber: Ich kann darauf dann zwar ein beliebige Zahl als Währung formatieren, komme aber nicht an den eigentlichen Format-String heran.

Zum Beispiel liefert folgender Code "1,00 €":
CultureInfo ci = new CultureInfoI("de-DE");
string.Format(ci.NumberFormat, "{0:C}", 1);

Wie komme ich an das Format, welches durch 'C' ausgedrückt wird (#.###,## €)?
News:
29.01.2010
DaSpors 4,1k 2 8
Was genau willst du denn erreichen? Das alle Cltures in einem anderen Format dargestellt werden oder willst du nur 1 spezielles (z.B. de-DE) abändern?
Scout 29.01.2010
Ich möchte den Format-String, den C# intern verwendet im eine Zahl als Währung zu formatieren.
DaSpors 30.01.2010
Genauer: Ich will die Währungsformate aller Cultures als strings exportieren.
DaSpors 30.01.2010
3 Antworten
3
Da Edit nicht funktioniert mach ich mal eine neue Antwort auf...

Also wenn ich dich richtig verstehe, möchtest du die Vorschrift haben, wie für jedes Land das Ergebnis gebildet wird - zum Bsp. beim Standard Formatbezeichner "C".

Doch so eine Vorschrift ist meines Wissens nicht direkt abrufbar! Die Informationen sind alle im NumberFormatInfo-Objekt hinterlegt und daraus wird zur Laufzeit der Result-String zusammengebaut.

Beispiel: Der Tausendertrenner und die TausenderGruppe sind im NumerFormatInfo angegeben. Damit kann dann das Ergebnis entsprechend formatiert werden. Ist eine Gruppe von 3 Ziffern und ein Trenner="." angegeben, wird alle 3 Stellen ein "." hinzugefügt.

Um deine Vorschrift zu erhalten müsstest du also den .NET Framework Quelltext analysieren und die einzelnen Schritte bis der Result-String fertig ist aufschreiben.

Grüßle
01.02.2010
Scout 1,4k 2 8
1
Edit: lt. MSDN gibt CurrencyNegativPattern (Werte 0-15) die Position des Wärungssymbols wieder (siehe http://msdn.microsoft.com/en-us/library/system.globalization.numberformatinfo.currencynegativepattern%28VS.71%29.aspx) Für CurencyPosityPattern sind nur Werte 0-3 erlaubt. Grüßle
Scout 01.02.2010
Dankeschönstens! Genau das hab ich gesucht!!!11elf
DaSpors 02.02.2010
Also Deinen Kommentar mein ich :)
DaSpors 02.02.2010
1
Also soweit ich weiß gibst du mit "{0:C}" vor, dass du den Standard verwenden möchtest. Ob man diesen ändern kann, kann ich so atock nicht sagen. Allerdings kannst du genau an dieser Stelle deinen eigenen "Custom Format String" angeben (siehe http://msdn.microsoft.com/en-us/library/0c899ak8.aspx).

Das sieht dann zum Bsp. so aus:
CultureInfo ci = new CultureInfo("de-DE");
string.Format(ci.NumberFormat,"{0:00.00}", 1);
// Ausgabe 01.00


Grüßle
29.01.2010
Scout 1,4k 2 8
Hilft leider nicht, weil ich brauche das quasi umgekehrt: Ich will den Format-String haben, den C# für {0:C} einsetzt.
DaSpors 30.01.2010
1
Wenn du die Zusammensetzung der internen Zeichenfolge aufdrößeln willst, sind die NumberFormatInfo Eigenschaften deine gesuchten Freunde.
Hier kannst du vom CurrencySymbol über den CurrencyDecimalSeparator bis zu den CurrencyDecimalDigits alles erfahren.
Hoffe das war es, was du suchtest.

Servus,
Klaus
01.02.2010
klaus_b 1,6k 2 7
Leider auch nicht, weil ich dann immer noch nicht weiss, WIE diese Properties zusammengefügt werden, also ob z.B. das Symbol hinten oder vorne steht.
DaSpors 01.02.2010
1
Dann frage doch die Eigenschaft CurrencyPositivPattern. Bei Rüchgabe 0 oder 2 steht das Symbol hinten, bei 1 oder 3 seben vorne.
klaus_b 01.02.2010
Jop, das mach ich jetzt auch ;) Danke
DaSpors 02.02.2010

Stelle deine .net-Frage jetzt!