Пытаюсь убрать пробелы из строки, но ничего не происходит.
public class Main {
public static void main(String[] args) {
int i = 66;
int j = 66;
DecimalFormat format = new DecimalFormat();
format.setDecimalSeparatorAlwaysShown(false);
String s = String.valueOf(format.format(i*j )).replaceAll("\\s", "");
double d = Double.parseDouble(s);
}
}
ошибка
Exception in thread "main" java.lang.NumberFormatException: For input string: "4 356"
at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
at sun.misc.FloatingDecimal.parseDouble(Unknown Source)
at java.lang.Double.parseDouble(Unknown Source)
at Main.main(Main.java:13)
с чем это связано и как убрать этот псевдопробел?
PS: если написать просто строку с пробелом replaceAll
работает нормально
Все потому, что тот пробел, который появляется в результате format
является неразрывным, его код в ASCII таблице равен 160, что в шестнадцатеричной системе исчисления соответствует A0.
Вы можете использовать следующий regexp:
String s = String.valueOf(format.format(i*j )).replaceAll("\u00a0", "");
Будьте внимательны, что при форматировании дробного числа, точка скорее всего будет заменена на запятую (зависит от локали), что также не даст распарсить это число. Чтобы исправить эту проблему, вы можете либо в методе replaceAll
заменить запятую на точку, либо использовать DecimalFormatSymbols
:
DecimalFormatSymbols formatSymbols = new DecimalFormatSymbols();
formatSymbols.setDecimalSeparator('.');
format.setDecimalFormatSymbols(formatSymbols);
В вашем случае, так как вы умножаете целые числа и произведение всегда будет целым достаточно даже простого \\D
:
String s = String.valueOf(format.format(i*j )).replaceAll("\\D", "");
"\D" - Соответствует любому нецифровому символу. Эквивалентно выражению [^0-9].
Будьте внимательны, что при форматировании дробных чисел, точка в этом случае будет стерта.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Пытаюсь подключиться к базе запущенной из XAMPP с другого компьютера по локалкеАдрес сервера 192
Друзья! Я понял как работают сеттеры, геттеры и конструкторыНо не понял одну вещь:
Проблема следующего характера, создал список checkBox-ов при помощи recyclerView, наполняю его следующим образом:
Недавно начал практиковаться в медиа-запросахНужно ли добавлять медиа-запрос, если ширина экрана <= 260px? Существуют ли вообще устройства...