2011-06-26 8 views
-1

私は国別コードを自分のアプリの通貨に変換する必要があります。国コードを対応する通貨に変換するにはどうすればいいですか?

私のジオロケーションライブラリに基づいて、ユーザーが米国(ドイツ)、スイス(スイス)、日本(JPY)などであるかどうかを知ることができます。対応する通貨:

US -> USD ($) 
DE -> EURO (€) 
CH -> CHF (CHF) 
JP -> YEN (JPY) 

Javaでこれを行うにはどうすればよいですか?

+0

[Javaロケール](http://java.sun.com/developer/technicalArticles/J2SE/locale/)をチェックする価値があります。 –

答えて

1

this pageを解析してデータベースに保存する必要があります。

インターネットソースから必要なアプリケーションに適した適切なデータベースを構築するのは難しいですが、それは本当に価値があります。 htmlを解析するには、regexpを試してみることをお勧めします。複雑すぎる場合は、apache jerichoまたはtag soupを使用してください。

3

はい。標準のJDKは、主要外国通貨をサポートしています。

System.out.println(DecimalFormat.getCurrencyInstance(Locale.US).format(12.34)); 
System.out.println(DecimalFormat.getCurrencyInstance(Locale.FRANCE).format(12.34)); 

出力:これは便利です

$12.34 
12,34 € 

希望。

+0

あなたはもっと広いものを知っていますか?それはほんのわずかの通貨しかサポートしていません –

+0

@Adamどの通貨を特にサポートしたいですか? – Bohemian

+0

南アフリカから –

0

これはどうですか?それはハックですが、大丈夫です。

/** 
* 
*/ 
package lt; 

import java.util.Currency; 
import java.util.HashMap; 
import java.util.Locale; 
import java.util.Map; 

/** 
* LocaleTest - LocaleTest 
* @version 1.0 
* @author <a href="mailto:[email protected]">Chris Dennett</a> 
*/ 
public class LocaleTest { 
    public static final Map<String, Currency> CURRENCIES = new HashMap<String, Currency>(); 
    static { 
     for (Locale l : Locale.getAvailableLocales()) { 
      try { 
       Currency c = Currency.getInstance(l); 

       if (c != null) { 
        CURRENCIES.put(l.getCountry(), c); 
        System.out.println("key: " + l.getCountry() + ", loc: " + l + ", curr: " + c + " (" + c.getSymbol(l) + ")");     
       } 
      } catch (IllegalArgumentException e) { 

      } 
     } 
    } 

    public static final void main(String args[]) { 
     if (args == null || args.length == 0 || (args[0] = args[0].trim()).isEmpty()) { 
      System.out.println("Please provide an argument!"); 
      return; 
     } 
     System.out.println("LocaleTest: got " + args[0] + " as argument"); 
     Currency c = CURRENCIES.get(args[0]); 
     if (c != null) { 
      System.out.println("LocaleTest: got " + c + " (" + c.getSymbol() + ") as currency"); 
     } else { 
      System.out.println("LocaleTest: no currency found for " + args[0]); 
     } 
    } 
} 

与えGBと出力:

... 
key: YE, loc: ar_YE, curr: YER (?.?.?) 
key: MK, loc: mk_MK, curr: MKD (Den) 
key: CA, loc: en_CA, curr: CAD ($) 
key: VN, loc: vi_VN, curr: VND (?) 
key: NL, loc: nl_NL, curr: EUR (€) 
key: US, loc: es_US, curr: USD (US$) 
key: CN, loc: zh_CN, curr: CNY (?) 
key: HN, loc: es_HN, curr: HNL (L) 
key: US, loc: en_US, curr: USD ($) 
.. 
LocaleTest: got GB as argument 
LocaleTest: got GBP as currency 

問題は通貨記号ではなく記号($£など)として名前を表示することです。通貨は、元の国のロケールを使用して作成する必要があります。この問題を解決した場合、まだ正しく表示されていないシンボルがある通貨が残っている可能性があります。

関連する問題