根据国家/地区获取货币符号

Posted

技术标签:

【中文标题】根据国家/地区获取货币符号【英文标题】:Get the currency symbol based on country 【发布时间】:2013-08-18 02:52:00 【问题描述】:

我有一个显示货币的 TextView。默认情况下,我的 textview 的文本是:$0.00 我怎样才能使$根据用户选择而变化。

我有以下代码:

Locale locale=new Locale("en", "US");
Currency currency=Currency.getInstance(locale);
String symbol = currency.getSymbol();
Toast.makeText(getActivity(), symbol, Toast.LENGTH_SHORT).show();

其中显示 $ 但如果我有以下内容:

Locale locale=new Locale("en", "AU");
Currency currency=Currency.getInstance(locale);
String symbol = currency.getSymbol();
Toast.makeText(getActivity(), symbol, Toast.LENGTH_SHORT).show();

它显示AU$ 而不是$

如何在没有所有额外内容的情况下设置货币符号?

【问题讨论】:

你有其他例子说明它对其他国家的货币符号有什么作用吗? 我试过你的代码。它显示“AUD”而不是 AU$。我们不能期望 $ for Locale("en", "AU") 因为它已经用于 Locale("en", "US") 你知道什么最能显示金额吗?我的计算收费 (play.google.com/store/apps/details?id=com.sikni8.tollculator) 的应用程序目前正在使用 $ 符号,这使得它在美国以外或他们不使用 $ 的任何地方都不是用户友好的,所以你认为我能做到的最好方法是什么显示金额? 【参考方案1】:

如果您想要将该格式添加到您拥有的数字中,您可以这样做

myString = NumberFormat.getCurrencyInstance().format(myNumber);

默认 或

myString = NumberFormat.getCurrencyInstance(new Locale("en", "AU")).format(myNumber);

指定

【讨论】:

会不会在任意数字前面加货币符号? 我目前使用以下:tvTotalAmountLabel.setText("$" + tollToString(totalTollAmount)); 来显示金额。如何将 $ 替换为 Locale 的货币? 这取决于 tollToString(totalTollAmount) 的作用,但您可以保存您的 numberFormat 实例 NumberFormat numFormat = NumberFormat.getCurrencyInstance(); 并且每次需要时都可以像这样使用它 tvTotalAmountLabel.setText(numFormat.format(totalTollAmount));【参考方案2】:

您可以使用正则表达式来删除所有单词字符。

    String symbol = currency.getSymbol().replaceAll("\\w", "");

但是,如果您处理的任何货币符号使用字母,这可能并不理想。

【讨论】:

你知道什么最能显示金额吗?我的计算收费 (play.google.com/store/apps/details?id=com.sikni8.tollculator) 的应用程序目前正在使用 $ 符号,这使得它在美国以外或他们不使用 $ 的任何地方都不是用户友好的,所以你认为我能做到的最好方法是什么显示金额? 在java中它不会显示所有国家/地区的符号所以如果我替换单词就不会有任何东西??

以上是关于根据国家/地区获取货币符号的主要内容,如果未能解决你的问题,请参考以下文章

PHP PHP国家/地区代码到HTML货币符号列表

货币符号的 Web 服务

text SQL中具有货币(ISO代码和符号)格式的国家/地区列表。

国际化之货币符号显示

如何在报表生成器中动态格式化货币字段?

显示的货币格式