我有String
8890
,我希望转换为88,90
。
这有更优雅的方式吗?
String s = "8890";
s = s.substring(0, s.length() - 2) + "," + s.substring(s.length() - 2);
System.out.println(s);
答案 0 :(得分:5)
也许这对你来说更优雅
StringBuilder sb = new StringBuilder("8890");
sb.insert(2, ',');
System.out.println(sb);
答案 1 :(得分:1)
看起来你正在尝试格式化十进制数字,为什么不这样做呢?
public static void main(String[] args) throws Exception {
final String s = "8890";
final BigDecimal dec = new BigDecimal(s).divide(BigDecimal.valueOf(100));
final String formatted = new DecimalFormat("0.00", DecimalFormatSymbols.getInstance(Locale.FRENCH)).format(dec);
System.out.println(formatted);
}
只需选择一个Locale
小数点分隔符即可 - 我选择了French
。
输出:
88,90
或者在默认实例上设置setMinimumFractionDigits
:
final NumberFormat format = NumberFormat.getInstance(Locale.FRENCH);
format.setMinimumFractionDigits(2);
final String formatted = format.format(dec);
结果是一样的。
修改强>
OP的评论这是欧元格式。在这种情况下,存在一个完全相同的现有格式化程序:
public static void main(String[] args) throws Exception {
final String s = "8890";
final BigDecimal dec = new BigDecimal(s).divide(BigDecimal.valueOf(100));
final String formatted = DecimalFormat.getCurrencyInstance(Locale.FRANCE).format(dec);
System.out.println(formatted);
}
将输出:
88,90 €
选择一个他们使用领先的€的国家,例如意大利,将导致:
€ 88,90
答案 2 :(得分:0)
s = String.format("%s,%s", s.substring(0, 2), s.substring(2));