2016-06-26 3 views
1

私は、このメソッドを使用してAndroidアプリ開発しています:Androidの通貨形式を元に戻すにはどうすればいいですか?

public static String currencyFormat(BigDecimal n) { 
    return NumberFormat.getCurrencyInstance().format(n); 
} 

ロケールの通貨に基づいて数値をフォーマットします。

通貨形式を元に戻す方法35ドルから35ドルですか?最初の文字を削除することはできません。異なるロケールの通貨名の長さが異なるためです。

+1

通貨記号を別途保存する必要があります。どちらか、または入力として文字列を使用してください(これはお勧めしません)。 BigDecimalを通貨での入力として使用することはできません。これは、通貨量にユニコード値を追加するだけであるためです。 –

+0

このコードはうまくいきましたが、文字列に通貨文字が含まれているため、BigDecimalを使用して変換することはできません。私は考えがある。ロケールの通貨を表す文字列を取得する方法はありますか?それから私はちょうどstring.replaceAll(通貨、 ""); – leonz

答えて

1

通貨単位を別のフィールドに格納し、適切な等価とハッシュコードを持つ最終値クラス(CurrencyAmountなど)などの高次の抽象クラスにカプセル化する必要があります。 [あなたがスカラーをするなら、基本的にあなたはケースクラスが必要です。]他の解決方法では、単位部分を金額部分から「リバースエンジニアリング」する必要があります。許容値の仕様の複雑さによっては、さまざまな程度の信頼性があります。私はちょうど自分のフィールドに2つの部分をエンコードし、すべてのケースでこれを解決します。

0

正規表現を使用して、文字列以外のすべての文字を切り取ろうとする場合があります。

お試しthis

+0

これは問題です。文字列は、その中に "sin"、 "cos"などを含む数式です。 – leonz

関連する問題