如何从包含字符和数字的字符串中获取Locale?它甚至可能吗?我在java中并不是非常先进,我担心这会进入比喻池的深层。
说我有;
String userInput = "250.00 SEK";
从此我想设备打印“瑞典”的方法。 所以我所知道的是货币代码,我想要该语言环境的DisplayName。
答案 0 :(得分:0)
我认为您唯一的希望是手动构建Map<String, Locale>
并根据货币字符串末尾的国家/地区代码进行查找。没有自动化的方式从货币到区域设置(至少我知道)
答案 1 :(得分:0)
答案 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());;
}
}
}
}
会给你:瑞典