Подтвердить что ты не робот

Удалить конечную десятичную точку и нули с помощью Regex

Является ли это правильным REGEX для удаления конечных десятичных чисел и нулей из строки? Я не могу заставить его работать. Что мне не хватает?

  • 78.000 → 78
  • 78.008 → 78.008

str.replaceAll("^.0*$", "");

4b9b3361

Ответ 1

Вам нужно избежать ., так как это специальный символ в Regex, который соответствует любому символу. Вы также должны удалить ^, который привязывается в начале номера.

str.replaceAll("\\.0*$", "");

Вы можете использовать lookbehind, если хотите убедиться, что перед точкой есть число, например:

str.replaceAll("(?<=^\\d+)\\.0*$", "");

Lookbehind (часть (?<=...)) не является частью совпадения, поэтому он не будет заменен, но он все равно должен совпадать для соответствия остальных регулярных выражений.

Ответ 2

Неа. Используйте это:

str.replaceAll("[.0]+$", "");

Ответ 3

Избавьтесь от ^, который соответствует началу строки. Вам также нужно выйти ., так как это метасимвол регулярного выражения, который соответствует любому символу (кроме строк новой строки):

str.replaceAll("\\.0*$", "");

Демо: http://ideone.com/RSJrO