Лучший способ (более элегантный) для добавления символа в строку

1

У меня есть String типа 8890 и я хочу преобразовать ее в 88,90. Есть более элегантный способ, что это?

    String s = "8890";
    s = s.substring(0, s.length() - 2) + "," + s.substring(s.length() - 2);
    System.out.println(s);
Теги:
substring
formatting

3 ответа

5
Лучший ответ

Возможно, это более элегантно для вас

StringBuilder sb = new StringBuilder("8890");
sb.insert(2, ',');
System.out.println(sb);
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
  • 0
    +1 за использование правильных инструментов, которые говорят, что именно код должен делать.
  • 0
    Это евро формат
0

s = String.format("%s,%s", s.substring(0, 2), s.substring(2));

  • 0
    Я изменил свой код ...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню