如何从字符串构造货币区域设置?

时间:2013-11-16 19:28:59

标签: java locale currency number-formatting

如何从包含字符和数字的字符串中获取Locale?它甚至可能吗?我在java中并不是非常先进,我担心这会进入比喻池的深层。

说我有;

String userInput = "250.00 SEK";

从此我想设备打印“瑞典”的方法。 所以我所知道的是货币代码,我想要该语言环境的DisplayName。

6 个答案:

答案 0 :(得分:0)

我认为您唯一的希望是手动构建Map<String, Locale>并根据货币字符串末尾的国家/地区代码进行查找。没有自动化的方式从货币到区域设置(至少我知道)

答案 1 :(得分:0)

您可以将Currency类与ISO 4217

中使用的代码结合使用

答案 2 :(得分:0)

假设所有货币都有3个字符(http://www.xe.com/iso4217.php),您可以

    String code = userInput.substring(userInput.length()-3,userInput.length());
    state = Currency.valueOf(code);
    system.out.print(state.name);


public enum Currency{
  SEK("Sweden"),
  GBP("British Pound");

  private String name;

  public Currency(String n) { this.name = n; }
  public String toString() { return this.name; }
}

答案 3 :(得分:0)

String userInput = "250.00 SEK";
    final Set<Currency> availableCurrencies = Currency.getAvailableCurrencies();
    for (Currency availableCurrency : availableCurrencies) {
        final String currencyCode = availableCurrency.getCurrencyCode();
        final String displayName = availableCurrency.getDisplayName();
        if (userInput.contains(currencyCode)){
            System.out.println("Currency is " + availableCurrency.getDisplayName());
        }
    }

货币是瑞典克朗

答案 4 :(得分:0)

假设你的字符串总是有空格,你可以按空格分割,然后通过返回数组中的第二个值获取货币实例。

String userInput = "250.00 SEK";
String[] parts = userInput.split(" ");

Currency currency = Currency.getInstance(parts[1]);

System.out.print(currency.getDisplayName());

答案 5 :(得分:0)

String userInput = "250.00 SEK";
    final Set<Currency> availableCurrencies = Currency.getAvailableCurrencies();
    for (Currency availableCurrency : availableCurrencies) {
        final String strCode = availableCurrency.getCurrencyCode();
        final String currencyCode = strCode;
        if (userInput.contains(currencyCode)){
            for (Locale locale : NumberFormat.getAvailableLocales()) {
                String code = NumberFormat.getCurrencyInstance(locale).getCurrency().getCurrencyCode();
                if (strCode.equals(code)) {
                    System.out.println(locale.getDisplayCountry());;
                }
            }
        }
    }

会给你:瑞典