我有String
像8890
,我想要轉換爲88,90
。 還有更優雅的方式嗎?將字符添加到字符串的更好方法(更優雅)
String s = "8890";
s = s.substring(0, s.length() - 2) + "," + s.substring(s.length() - 2);
System.out.println(s);
我有String
像8890
,我想要轉換爲88,90
。 還有更優雅的方式嗎?將字符添加到字符串的更好方法(更優雅)
String s = "8890";
s = s.substring(0, s.length() - 2) + "," + s.substring(s.length() - 2);
System.out.println(s);
這也許是更優雅你
StringBuilder sb = new StringBuilder("8890");
sb.insert(2, ',');
System.out.println(sb);
貌似你試圖格式化十進制數,爲什麼不這樣做呢?
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
你是對的!我改變了我的代碼。 – d3vnico