Удалить конечную десятичную точку и нули с помощью регулярных выражений - PullRequest
13 голосов
/ 21 сентября 2011

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

  1. 78.000 -> 78
  2. 78.008 -> 78.008

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

Ответы [ 3 ]

24 голосов
/ 21 сентября 2011

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

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

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

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

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

5 голосов
/ 21 сентября 2011

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

str.replaceAll("[.0]+$", "");
4 голосов
/ 21 сентября 2011

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...