我有一个字符串,我想用自定义的方式格式化它。这是我的字符串:
String amount = "355128000";
我希望它的格式是这样的:
String formattedAMount = "3 551 280,00"
第一个数字后有一个空格,一组3个数字,最后两个数字前有一个逗号
bgtovc5b1#
您可以创建NumberFormatter的示例并指定选项:
NumberFormatter
import java.text.DecimalFormat; import java.text.DecimalFormatSymbols; import java.text.NumberFormat; import java.util.Locale; public class NumberFormatExample { private static final DecimalFormat numberFormatter; static { numberFormatter = (DecimalFormat) NumberFormat.getInstance(Locale.US); // Configure/override DecimalFormatSymbols symbols = numberFormatter.getDecimalFormatSymbols(); symbols.setGroupingSeparator('\u00a0'); // non-breaking space symbols.setDecimalSeparator(','); numberFormatter.setDecimalFormatSymbols(symbols); numberFormatter.setMinimumFractionDigits(2); } public static String formatNumber(String rawNumber) { return numberFormatter.format(Long.parseLong(rawNumber) / 100d); } public static void main(String[] args) { String amount = "355128000"; System.out.println(formatNumber(amount)); // 3 551 280,00 } }
看起来您可以使用French格式化程序,并仅指定最小分数位。
import java.text.DecimalFormat; import java.text.NumberFormat; import java.util.Locale; public class NumberFormatExample { private static final DecimalFormat numberFormatter; static { numberFormatter = (DecimalFormat) NumberFormat.getInstance(Locale.FRENCH); // Configure numberFormatter.setMinimumFractionDigits(2); } public static String formatNumber(String rawNumber) { return numberFormatter.format(Long.parseLong(rawNumber) / 100d); } public static void main(String[] args) { String amount = "355128000"; System.out.println(formatNumber(amount)); // 3 551 280,00 } }
mzaanser2#
如果你先把它转换成double,你可以用String.format()化它:
String.format()
String amount = "355128000"; double amountDouble = Double.parseDouble(amount); String formattedAmount = String.format("%,.2f", amountDouble); // 355,128,000.00
如果你想让它看起来和你展示的完全一样,你可以通过以下方式实现:
String formattedAmount = String.format("%,.2f", amountDouble).replace(",", " ").replace(".", ",");
但是String.format()可能不是最好的方法,使用DecimalFormat代替。
ukqbszuj3#
我会放弃NumberFormat,只使用与您所需格式匹配的France locale按如下方式执行。
NumberFormat
France locale
String amount = "355128000"; UnaryOperator<String> format = str -> { long v = Long.parseLong(str); return String.format(Locale.FRANCE, "%,.2f", v / 100.); }; System.out.println(format.apply(amount));
印刷品
3 551 280,00
3条答案
按热度按时间bgtovc5b1#
您可以创建
NumberFormatter
的示例并指定选项:编辑
看起来您可以使用French格式化程序,并仅指定最小分数位。
mzaanser2#
如果你先把它转换成double,你可以用
String.format()
化它:如果你想让它看起来和你展示的完全一样,你可以通过以下方式实现:
但是
String.format()
可能不是最好的方法,使用DecimalFormat代替。ukqbszuj3#
我会放弃
NumberFormat
,只使用与您所需格式匹配的France locale
按如下方式执行。印刷品