Добавить символ процента (%) к строке, если строка на самом деле является числом - PullRequest
0 голосов
/ 24 апреля 2020

Я новичок в java и, изучая основные понятия, столкнулся с проблемой, когда мне нужно добавить символ%, например, к строковому номеру.

String st = "0.9" -> "0.9%"
String st2 = "1.5" -> "1.5%"
String st1 = "AAA09" -> Should throw an exception.

Я пробовал ниже, но не повезло, буду признателен за любую помощь.

public static String convertToCurrancy(String value) {
        Pattern p = Pattern.compile("\\d+(\\.\\d+)%");
        String bigDecimalConvertedValue = null;
        DecimalFormatSymbols symbols = new DecimalFormatSymbols();
        DecimalFormat decimalFormat = new DecimalFormat(p.toString(), symbols);

        try {
            BigDecimal bigDecimal = new BigDecimal(value);
            bigDecimalConvertedValue = decimalFormat.format(bigDecimal);
            return bigDecimalConvertedValue;
        } catch (Exception e) {
            return value;
        }

    }

1 Ответ

0 голосов
/ 24 апреля 2020

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

String result = text.replaceFirst("^\\d+(?:\\.\\d+)?$", "$0%");

См. Демонстрационную версию regex .

Подробности

  • ^ - начало строки
  • \d+ - 1+ цифр
  • (?:\.\d+)? - необязательная группа без захвата, соответствующая 1 или 0 вхождениям
    • \. - точка
    • \d+ - 1+ цифр
  • $ - конец строки.

Внутри шаблона замены заполнитель $0 используется для ссылки на все значение соответствия.

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