Formatieren von Währungswerten

Flash Player 10.1 und höher, Adobe AIR 2.0 und höher

Die Anzeigeformate von Währungen unterscheiden sich ebenso stark wie die Zahlenformate. Im Folgenden wird als Beispiel gezeigt, wie der US-Dollar-Wert $123456.78 in verschiedenen Gebietsschemas formatiert wird:

Ländereinstellung

Zahlenformat

en-US (Englisch, USA)

$123,456.78

de-DE (Deutsch, Deutschland)

123.456,78 $

en-IN (Englisch, Indien)

$ 1,23,456.78

Bei der Währungsformatierung gelten dieselben Faktoren wie bei der Zahlenformatierung, zusätzlich jedoch auch die folgenden Aspekte:

  • ISO-Code der Währung. Der dreistellige ISO 4217-Währungscode für das verwendete Gebietsschema, wie beispielsweise USD oder EUR.

  • Währungssymbol. Das Symbol oder der String der Währung im verwendeten Gebietsschema, wie $ oder €.

  • Format für negative Währungsbeträge. Definiert die Position des Währungssymbols und des Symbols für negative Beträge oder Klammern in Bezug auf den numerischen Teil des Währungsbetrags.

  • Format für positive Währungsbeträge. Definiert die Position des Währungssymbols in Bezug auf den numerischen Teil des Währungsbetrags.

Verwenden der CurrencyFormatter-Klasse

Die CurrencyFormatter-Klasse formatiert numerische Werte in Strings, die Währungsstrings und formatierte Zahlen enthalten, und zwar gemäß den Konventionen eines bestimmten Gebietsschemas.

Wenn Sie ein neues CurrencyFormatter-Objekt instanziieren, stellt es die Währung auf die Standardwährung des angegebenen Gebietsschemas ein.

Das folgende Beispiel zeigt, dass ein mit dem deutschen Gebietsschema erstelltes CurrencyFormatter-Objekt automatisch Währungsbeträge in Euro verwendet:

var cf:CurrencyFormatter = new CurrencyFormatter( "de-DE" ); 
trace(cf.format(1234567.89)); // 1.234.567,89 EUR

In den meisten Fällen sollten Sie sich nicht auf die Standardwährung für ein Gebietsschema verlassen. Wenn das Standardgebietsschema des Benutzers nicht unterstützt wird, weist die CurrencyFormatter-Klasse ein anderes Gebietsschema als Ausweichlösung zu. Dieses alternative Gebietsschema kann eine andere Standardwährung aufweisen. Außerdem soll in der Regel sichergestellt werden, dass die Währungsformate korrekt für den Benutzer dargestellt werden, auch wenn die Beträge nicht in der Währung des Benutzers angezeigt werden. So sollen die Preise eines deutschen Unternehmens für einen kanadischen Benutzer zwar in Euro, aber im kanadischen Format angezeigt werden.

Die CurrencyFormatter.setCurrency()-Methode gibt genau an, welcher Währungsstring und welches Währungssymbol verwendet werden sollen.

Der Code im folgenden Beispiel zeigt Euro-Beträge für Benutzer im französischsprachigen Teil Kanadas an.

var cf:CurrencyFormatter = new CurrencyFormatter( "fr-CA" ); 
cf.setCurrency("EUR", "€"); 
trace(cf.format(1234567.89)); // 1.234.567,89 EUR

Mithilfe der setCurrency()-Methode können auch eindeutige Währungssymbole festgelegt werden, um Verwirrung zu vermeiden: Zum Beispiel:

cf.setCurrency("USD","US$");

Standardmäßig zeigt die format()-Methode einen dreistelligen ISO 4217-Währungscode anstelle des Währungssymbols an. ISO 4217-Codes sind eindeutig und müssen nicht lokalisiert werden. Viele Benutzer ziehen es jedoch vor, anstelle der ISO-Codes die Währungssymbole zu sehen.

Die CurrencyFormatter-Klasse hilft Ihnen bei der Entscheidung, welches Symbol ein formatierter Währungsstring enthalten soll, wie das Dollar- oder Euro-Zeichen oder einen dreistelligen ISO-Währungsstring, wie USD oder EUR. Beispielsweise kann ein Wert in kanadischen Dollar für Benutzer in Kanada im Format $200 angezeigt werden. Für Benutzer in den USA wird dagegen CAD 200 angezeigt. Mithilfe der formattingWithCurrencySymbolIsSafe()-Methode können Sie feststellen, ob das Währungssymbol eines Betrags bei der Gebietsschema-Einstellung des Benutzers unklar oder falsch wäre.

Im folgenden Beispiel wird ein Euro-Wert für das Gebietsschema „en-US“ formatiert. Je nach Gebietsschema des Benutzers enthält der Ausgabestring entweder den ISO-Währungscode oder das Währungssymbol.

var cf:CurrencyFormatter = new CurrencyFormatter( "en-CA"); 
 
if (cf.formattingWithCurrencySymbolIsSafe("USD")) 
{ 
    trace(cf.format(1234567.89, true)); // $1,234,567.89 
} 
else 
{ 
    cf.setCurrency("USD", "$"); 
    trace(cf.format(1234567.89)); // USD1,234,567.89 
}

Analysieren von Strings mit Währungswerten

Die CurrencyFormatter-Klasse kann auch einen Währungsbetrag und einen Währungsstring aus einem Eingabestring extrahieren, der den Formatierungsanforderungen eines bestimmten Gebietsschemas entspricht. Die CurrencyFormatter.parse()-Methode speichert den analysierten Betrag und den Währungsstring in einem CurrencyParseResult-Objekt, wie im Folgenden gezeigt:

var cf:CurrencyFormatter = new CurrencyFormatter( "en-US" ); 
var inputCurrencyString:String = "(GBP 123,56,7.890)"; 
var parseResult:CurrencyParseResult = cf.parse(inputCurrencyString); 
trace("parsed amount: " + parseResult.value); // -1234567.89 
trace("currencyString: " + parseResult.currencyString ); // GBP

Der Währungsstring des Eingabestrings kann ein Währungssymbol, einen ISO-Währungscode und zusätzliche Textzeichen enthalten. Die Positionen des Währungsstrings, des Zeichens für negative Zahlen und des numerischen Wertes entsprechen den Formaten, die von den negativeCurrencyFormat- und positiveCurrencyFormat-Eigenschaften angegeben sind. Zum Beispiel:

var cf:CurrencyFormatter = new CurrencyFormatter( "en-US" ); 
var inputCurrencyString:String = "Total $-123,56,7.890"; 
var parseResult:CurrencyParseResult = cf.parse(inputCurrencyString); 
trace("status: " + cf.lastOperationStatus ); // parseError 
trace("parsed amount: " + parseResult.value); // NaN 
trace("currencyString: " + parseResult.currencyString ); // 
cf.negativeCurrencyFormat = 2; 
parseResult = cf.parse(inputCurrencyString); 
trace("status: " + cf.lastOperationStatus ); // noError 
trace("parsed amount: " + parseResult.value); // -123567.89 
trace("currencyString: " + parseResult.currencyString ); // Total $                

In diesem Beispiel besteht der Eingabestring aus einem Währungsstring gefolgt von einem Minuszeichen und einer Zahl. Der negativeCurrencyFormat-Standardwert für das Gebietsschema „en-US“ gibt jedoch vor, dass das Negativzeichen zuerst steht. Deshalb gibt die parse()-Methode einen Fehler aus und der analysierte Wert lautet NaN.

Nachdem negativeCurrencyFormat auf 2 eingestellt wurde, wodurch der Währungsstring zuerst steht, kann die parse()-Methode erfolgreich ausgeführt werden.