【问题标题】:How to construct a Currency Locale from a String?如何从字符串构造货币语言环境?
【发布时间】:2023-04-11 01:05:02
【问题描述】:

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

说我有;

String userInput = "250.00 SEK";

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

【问题讨论】:

  • 如果格式比较一致,可以用正则表达式分割字符串

标签: java locale currency number-formatting


【解决方案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());;
                            }
                        }
                    }
                }
            

            会给你:瑞典

            【讨论】:

              猜你喜欢
              • 2012-09-23
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多