【问题标题】: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> 并根据货币字符串末尾的国家/地区代码进行查找。没有自动的方法可以从一种货币转到一个语言环境(至少我知道)
【解决方案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());;
}
}
}
}
会给你:瑞典