Проблема с преобразованием формата строки

Проблема возникла с тестированием сайта, но я кратко объясню суть.
Есть число и сnрока, нужно привести число к формату строки.
double i = 1450.00; String s1 = "1 450,00 грн."; String s2 = String.format("%,.2f", i); s2 = s2.replace(".", ","); System.out.println(s1); System.out.println(s2 + " грн."); boolean b = s1.equals(s2 + " грн."); System.out.println(b);
в консоль выводит:
1 450,00 грн.
1 450,00 грн.
false
Помогите пожалуйста разобраться

Проверь пробелы, они бывают разные

картинка велосипеда

String str = "1 450,00 test";
str = str.replaceAll("[^\\d.,]", "").replace(",", ".");
float fl = Float.parseFloat(str);

Во-первых, вы выбрали заведомо неверную стратегию. Во-вторых, - типы данных.
Объясняю…

  • Для currency есть специальный формат → BigDecimal, и уж никак не double.
  • Для операций с валютой есть специальная библиотека → JavaMoney.

Итого, с UI нам приходит строка, expected result храним в виде BigDecimal, локализуем и форматируем при помощи NumberFormat, операции осуществляем при помощи JavaMoney.

        final NumberFormat formatter = DecimalFormat.getInstance(Locale.forLanguageTag("uk-UA"));
        final DecimalFormatSymbols customSymbols = new DecimalFormatSymbols();
        customSymbols.setDecimalSeparator(',');
        customSymbols.setGroupingSeparator(' ');
        ((DecimalFormat)formatter).setDecimalFormatSymbols(customSymbols);
        formatter.setGroupingUsed(true);

        try {
            final String actual = "1 450,01 грн.";
            final BigDecimal expected = new BigDecimal(formatter.parse("1 450,00 грн.").toString());

            MonetaryAmount actualAmount = Money.of(formatter.parse(actual), formatter.getCurrency().getCurrencyCode());
            MonetaryAmount expectedAmount = Money.of(expected, formatter.getCurrency().getCurrencyCode());
            Assert.assertTrue(actualAmount.isEqualTo(expectedAmount));
        } catch (ParseException e) {
            // handle me
        }

Спасибо, я правда уже иначе сделал, но почитаю и попробую и попробую ваш метод, для развития)

Я как-то пропустил что надо было наоборот, ну и ладно :slight_smile:

А что в итоге то помогло?

Изначальный вопрос поставлен некорректно, потому что строки будут:
1 450,00 грн. 1,450,00 грн.
Естественно они разные.

Я уловил вашу мысль и сделал как раз на оборот, все равно что сравнивать, по-большому счету.

Пошел по простому пути не стал отделать тысячи пробелом)) А на счет разных пробелов нашел только статью на хабре о пробелах в Unicode. Всё (или почти всё) о пробеле / Habr а как заменить один пробел на другой в джава пока еще не нашел и не пробовал ничего.