Удаление десятичных знаков внутри строки - PullRequest
1 голос
/ 21 октября 2019

Я пытаюсь добавить все значения в построитель строк, чтобы я мог его сериализовать. Итак, мой stringbuilder выглядит как

sb = abc78.00xyz

Теперь я хочу просто удалить 0 после десятичной дроби и получить вывод, например

Input       ->  Output I want
abc78.00xyz -> abc78xyz
abc78.08xyz -> abc78.08xyz

Я пытался использовать регулярное выражение, но это не работает:

sb.toString().replaceAll("\\.0*$", "")
sb.toString().replaceAll("[.0]+", "")

но это работает, только если у меня есть числа.

Может кто-нибудь сказать мне, как я могу получить нужные значения?

1 Ответ

1 голос
/ 21 октября 2019

Вы можете использовать

s = s.replaceAll("(?<=\\d)\\.0+(?!\\d)", "");

См. Демоверсию regex

Подробности

  • (?<=\d)- прямо перед текущим местоположением должна быть цифра
  • \. - точка
  • 0+ - одна или несколько 0 цифр
  • (?!\d)- не сопровождается никакими другими цифрами.

Демонстрация Java :

List<String> strs = Arrays.asList("abc78.00xyz", "abc78.08xyz");
for (String str : strs) {
    System.out.println( str.replaceAll("(?<=\\d)\\.0+(?!\\d)", "") );
}
// => abc78xyz, abc78.08xyz
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...