Есть ли способ запечатлеть любого персонажа вместе с символом новой строки в конце? - PullRequest
0 голосов
/ 18 февраля 2019

Я работаю над этим учебным упражнением TDD, которое сосредоточено вокруг создания и тестирования струнного калькулятора.Я на шаге, когда вы создаете настройку разделителя.Входные данные должны быть примерно такими: //[delimiter]\n[numbers…]. Допустимые входные данные должны быть примерно такими: //%\n5%2%5.

. Я шаг за шагом добавляю к регулярному выражению, и я попал в кирпичную стену.В настоящее время я только пытаюсь соответствовать части //[delimiter]\n.Как мне сопоставить любой символ (включая символ новой строки), сохраняя закрывающий символ новой строки?Например, .* продолжает поглощать всю строку, .+? принимает только один символ.Я также пытался использовать //.*(?=\n), но все еще не соответствует.Я подозреваю, что я должен использовать упреждающий взгляд, но как мне правильно это реализовать?

Ссылка на эту проблему: http://osherove.com/tdd-kata-1/. Любые указатели приветствуются и имеют отличный день.

Ответы [ 2 ]

0 голосов
/ 18 февраля 2019

Убедитесь, что ваша программа читает данные построчно (так же, как sed).Если нет, должно работать следующее:

// (. *?) \ N \ d + (\ 1 \ d +) +

  • разделитель может быть любой последовательностью символов

  • существует неограниченное количество чисел, которые нужно разделить (во второй строке).

Тест

0 голосов
/ 18 февраля 2019

Почему бы просто не сопоставить числа, а затем добавить и добавить группы вместе?

String input = "//[***]\n1***2*\n**3";
    Pattern pattern = Pattern.compile("\\d");
    Matcher matcher = pattern.matcher(input);
    int total = 0;
    while (matcher.find()) {
        total += Integer.valueOf(matcher.group(0));
    }
    System.out.println(total);

1.3 из состояний вопроса решить все как можно проще .Сопоставление всех цифр и их добавление в совокупности поддерживает разделители и т. Д., Поскольку не имеет значения, какой контент находится между числами.

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