如何从字符串构造货币语言环境?

Posted

技术标签:

【中文标题】如何从字符串构造货币语言环境?【英文标题】:How to construct a Currency Locale from a String? 【发布时间】:2013-11-16 19:28:59 【问题描述】:

如何从包含字符和数字的字符串中获取语言环境?甚至可能吗?我在java方面不是很先进,我担心这会进入比喻池的更深的一端。

说我有;

String userInput = "250.00 SEK";

从这里我想设备打印“瑞典”的方法。 所以我只知道货币代码,我想要那个地区的 DisplayName。

【问题讨论】:

如果格式比较一致,可以用正则表达式分割字符串 【参考方案1】:

假设所有货币都有 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; 

【讨论】:

【参考方案2】:

我认为您唯一的希望是手动构建Map<String, Locale> 并根据货币字符串末尾的国家/地区代码进行查找。没有自动的方法可以从一种货币转到一个语言环境(至少我知道)

【讨论】:

【参考方案3】:

您可以将Currency 类与ISO 4217 中使用的代码结合使用

【讨论】:

【参考方案4】:
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());
        
    

货币是瑞典克朗

【讨论】:

【参考方案5】:

假设您的字符串中始终有空格,您可以将其按空格拆分,然后通过返回数组中的第二个值获取货币实例。

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

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

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

【讨论】:

【参考方案6】:
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());;
                
            
        
    

会给你:瑞典

【讨论】:

以上是关于如何从字符串构造货币语言环境?的主要内容,如果未能解决你的问题,请参考以下文章

Magento 2 如何根据语言环境自定义货币符号和格式

JVM 从哪里获得 ubuntu 10.10 中的语言环境设置?

用户当前语言环境的货币符号

Paypal android 集成:不支持某些语言环境货币

在 Java 中的外国语言环境中格式化货币

语言环境在 iOS 模拟器中返回错误的货币符号