У меня есть 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
s = String.format("%s,%s", s.substring(0, 2), s.substring(2));