我的格式化字符串等于USD 20
我想将其转换为$20
。
我怎样才能有效率?我应该使用正则表达式,但由于区域设置的更改,国家ISOCode也将更改。
答案 0 :(得分:3)
你需要的是这个
import java.util.Currency;
import java.util.Locale;
// create a currency for US locale
Locale locale = Locale.US;
Currency curr = Currency.getInstance(locale);
// get and print the symbol of the currency
StringBuilder symbol = new StringBuilder(curr.getSymbol(locale));
System.out.println("Currency symbol is = " + symbol);
然后将Amount连接到符号。
在这种情况下,如果区域设置发生更改,则只需更改 在语言环境对象中。其余逻辑将是相同的。
希望这有帮助。
答案 1 :(得分:0)
我相信这应该适合你(假设已经声明并初始化了一些String s
):
Currency localCurrForJVM = Currency.getInstance(Locale.getDefault());
String localCurrencySymbol = localCurrForJVM.getSymbol();
s = s.replaceAll("[^0-9.]", "");
//using regex to replace all non-numeric, non-decimal characters with ""
s = new StringBuilder(s).insert(0, localCurrencySymbol).toString();
//prepends the symbol to the StringBuilder, which replaces s
一些参考文献:
public static Locale getDefault()
获取此实例的默认语言环境的当前值 Java虚拟机。
Java虚拟机在启动期间设置默认语言环境 在主机环境中。它被许多区域敏感方法使用 如果没有明确指定语言环境。它可以使用更改 setDefault方法。
和:
public static Currency getInstance(Locale locale)
返回给定语言环境的国家/地区的Currency实例。 语言环境的语言和变体组件将被忽略。该 随着各国货币变化,结果可能随时间而变化。对于 例如,欧洲货币的原始成员国 联盟,该方法返回旧的国家货币直到12月 2001年1月31日,欧洲从2002年1月1日起,当地时间 各国。
参数: locale - 需要Currency实例的国家/地区的区域设置
返回: 给定语言环境的国家/地区的Currency实例,或者为null