Попробуйте эти Locale
форматы в нужном Вам формате.
List<Locale> locales = Arrays.asList(new Locale("it", "CH"), new Locale("fr", "CH"), new Locale("de", "CH"));
for (Locale locale : locales) {
DecimalFormat df = (DecimalFormat) NumberFormat.getCurrencyInstance(locale);
DecimalFormatSymbols dfs = df.getDecimalFormatSymbols();
dfs.setCurrencySymbol("");
df.setDecimalFormatSymbols(dfs);
System.out.println(String.format("%5s %15s %15s", locale, format(df.format(1000)), format(df.format(1_000_000))));
}
метод Util
private static String format(String str) {
int index = str.lastIndexOf('\'');
if (index > 0) {
return new StringBuilder(str).replace(index, index + 1, ",").toString();
}
return str;
}
выход
it_CH 1,000.00 1'000,000.00
fr_CH 1,000.00 1'000,000.00
de_CH 1,000.00 1'000,000.00
установить df.setMaximumFractionDigits(0);
для удаления фракций
выход
it_CH 1,000 1'000,000
fr_CH 1,000 1'000,000
de_CH 1,000 1'000,000
check http://stackoverflow.com/questions/5114762/how-do-format-a-phone-number-as-a-string-in-java – Roshan
@Roshan решения в этом вопросе используют 'подстрока() 'или' replace() ', что может быть нормально для телефонных номеров, но это не лучшая идея при работе с фактическими числами (например, деньги). OP нужно будет учитывать отрицательные числа, цифры без десятичной точки и т. Д. – walen
Спасибо @Roshan! –