Расположение символа валюты для конкретной валюты в Java - PullRequest
2 голосов
/ 28 сентября 2010

Я знаю способ получения объекта Currency и других деталей для валюты в java с использованием языка и класса NumberFormat.Но я не могу найти что-либо в API, чтобы узнать, отображается ли символ валюты в начале или в конце

Например, 10 в США - это 10 долларов, где $ - в начале числа) 10 в злотых (польская валюта)равно 10 z (z для обозначения символа злотого, хотя фактический символ отличается).

Есть ли какое-либо свойство в числовом формате или классе валюты, которое может помочь мне определить, находится ли символ валюты в начале или в конце?

1 Ответ

1 голос
/ 28 сентября 2010

У меня не так много загруженных локалей ... но во Франции используется завершающий символ, в тайване используется начальный символ.

public class MyCurrency {
    public static void main(String[] args) {
        System.out.println(format(Locale.FRANCE, 1234.56f));
        System.out.println(format(Locale.TAIWAN, 1234.56f));
    }

    public static String format(Locale locale, Float value) {
        NumberFormat cfLocal = NumberFormat.getCurrencyInstance(locale);
        return cfLocal.format(value);
    }
}

Теперь, если вы действительно хотите знать, находится ли символ валюты в начале или в конце, используйте следующее в качестве отправной точки. Обратите внимание на переменную bPre ...

public String format(Locale locale, Float value) {

    String sCurSymbol = "";
    boolean bPre = true;
    int ndx = 0;

    NumberFormat cfLocal = NumberFormat.getCurrencyInstance(locale);
    if (cfLocal instanceof DecimalFormat) { // determine if symbol is prefix or suffix
        DecimalFormatSymbols dfs =
                ((DecimalFormat) cfLocal).getDecimalFormatSymbols();
        sCurSymbol = dfs.getCurrencySymbol();
        String sLP = ((DecimalFormat) cfLocal).toLocalizedPattern();


        // here's how we tell where the symbol goes.
        ndx = sLP.indexOf('\u00A4');  // currency sign

        if (ndx > 0) {
            bPre = false;
        } else {
            bPre = true;
        }

        return cfLocal.format(value);

    }
    return "???";
}

Кредит - я разорвал код с этой страницы. http://www.jguru.com/faq/view.jsp?EID=137963

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...