2013-08-15 13 views
3

У меня есть 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$ вместо $

Как я могу установить валюту символ без лишних вещей?

+1

У вас есть другие примеры что он делает для других стран денежные символы? –

+1

Я пробовал свой код. Он показывает «AUD» не AU $. Мы не можем ожидать $ for Locale («en», «AU»), потому что он уже используется для Locale («en», «US») – vinay

+0

Знаете ли вы, что лучше всего отображать сумму, любую сумму? Мое приложение, которое вычисляет Toll (https://play.google.com/store/apps/details?id=com.sikni8.tollculator), в настоящее время использует символ '' 'и делает его не удобным для пользователя за пределами США. или где-либо они не используют '$', так что, как вы думаете, я могу отображать сумму? –

ответ

2

Вы можете использовать регулярное выражение для удаления всех символов слова.

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

Однако это может быть не идеальным, если какой-либо из денежных знаков, с которыми вы имеете дело, использует буквы.

+0

Знаете ли вы, что лучше всего отображать сумму, любую сумму? Мое приложение, которое вычисляет Toll (https://play.google.com/store/apps/details?id=com.sikni8.tollculator), в настоящее время использует символ '' 'и делает его не удобным для пользователя за пределами США. или где-либо они не используют '$', так что, как вы думаете, я могу отображать сумму? –

+0

ну в java он не показывает символ для всех стран, поэтому, если в случае, если я заменю слова там не будет ничего ?? – silverFoxA

4

Если то, что вы хотите, чтобы добавить, что формат числа у вас есть вы могли бы сделать

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

по умолчанию или

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

для указания

+1

Будет ли он добавлять символ валюты перед любым номером? –

+0

В настоящее время я использую следующее: 'tvTotalAmountLabel.setText (" $ "+ tollToString (totalTollAmount));' для отображения суммы. Как заменить $ на валюту Locale? –

+0

Это будет зависеть от того, что делает 'tollToString (totalTollAmount)', но вы можете сохранить свой экземпляр numberFormat 'NumberFormat numFormat = NumberFormat.getCurrencyInstance();' и каждый раз, когда вам это нужно, используйте его так: tvTotalAmountLabel.setText (numFormat.format (numFormat.format) totalTollAmount)); ' – Hadriel