Удалить конечную десятичную точку и нули с помощью Regex
Является ли это правильным REGEX для удаления конечных десятичных чисел и нулей из строки? Я не могу заставить его работать. Что мне не хватает?
- 78.000 → 78
- 78.008 → 78.008
str.replaceAll("^.0*$", "");
Ответы
Ответ 1
Вам нужно избежать .
, так как это специальный символ в Regex, который соответствует любому символу. Вы также должны удалить ^
, который привязывается в начале номера.
str.replaceAll("\\.0*$", "");
Вы можете использовать lookbehind, если хотите убедиться, что перед точкой есть число, например:
str.replaceAll("(?<=^\\d+)\\.0*$", "");
Lookbehind (часть (?<=...)
) не является частью совпадения, поэтому он не будет заменен, но он все равно должен совпадать для соответствия остальных регулярных выражений.
Ответ 2
Неа. Используйте это:
str.replaceAll("[.0]+$", "");
Ответ 3
Избавьтесь от ^
, который соответствует началу строки. Вам также нужно выйти .
, так как это метасимвол регулярного выражения, который соответствует любому символу (кроме строк новой строки):
str.replaceAll("\\.0*$", "");
Демо: http://ideone.com/RSJrO