Пустая символьная константа в Java - PullRequest
2 голосов
/ 21 мая 2019

Как мы можем заменить конкретную константу символа пробелом в Java?

\0 заменяет символ пробела, а не пробел.

Ввод:

    String amount = "1.22.33,11";

Желаемый результат: 12233,11

Ответы [ 2 ]

3 голосов
/ 21 мая 2019
    String amount = "1.22.33,11";
    String result = amount.replace(".", "");
    System.out.println(result);

Выход:

12233,11

Нет необходимости использовать регулярное выражение или внешнюю зависимость.

Метод replace​(CharSequence target, CharSequence replacement) класса String заменяет каждое вхождение буквальной строки назначения строкой замены. Так что просто дайте пустую строку в качестве замены.

Ваша задача может быть описана как удаление вхождений .. Поэтому замена «пустым» символом, что бы это ни было, не является правильным решением, у вас все равно останется какой-то символ. Вместо этого мы заменяем односимвольную строку другой строкой, в которой нет символов.

Как отметил @Lino в комментариях, версия JDK, по крайней мере, до 8 (я не проверял 9 или 10) компилирует регулярное выражение в Pattern для каждого вызова метода. В Java 11 была обеспечена эффективная реализация.

3 голосов
/ 21 мая 2019

Вы можете использовать регулярные выражения для этого:

String result = amount.replaceAll("\\.", "");

\. соответствует каждому буквенному периоду (.) и заменяет его пустой строкой ("")


Вы можете дополнительно оптимизировать это, если вы сохраните регулярное выражение как java.util.regex.Pattern в переменную:

private static final Pattern DOT = Pattern.compile("\\.");

Который вы затем можете использовать так:

String result = DOT.matcher(amount).replaceAll("");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...