У меня не так много загруженных локалей ... но во Франции используется завершающий символ, в тайване используется начальный символ.
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