Рубрики
Без рубрики

Обучение программированию в реальном времени – 18 июня 2019 года

Сегодняшние уроки из живого потока кодирования. С тегом todayilearned, живое кодирование, java.

Краткое изложение того, что я узнал в сегодняшнем потоке живого кодирования по адресу https://twitch.tv/jitterted .

Сопоставление новых строк в регулярном выражении

Для текста, с которым я работаю, я хочу, чтобы поиск и замена регулярных выражений работали по новым строкам (по умолчанию сопоставление останавливается на новой строке). Сегодня я узнал, что мне нужно добавить это: (?s) в строку регулярного выражения, которая включает режим DOTALL , и поэтому подстановочный знак точки будет совпадать в новых строках. Для получения дополнительной информации см. JavaDoc: Для получения дополнительной информации см. JavaDoc:

Пример совпадений() используя ПОЛНОСТЬЮ

Я хочу найти текст, окруженный 3 равными знаками ( === ) как в начале, так и в конце. Текст может занимать несколько строк.

Например:

Before text.
===
Text inside the equals signs.
===
Outside text.

Для поиска текста я бы использовал метод String.matches() , например:

boolean found = text.matches();

Который возвращает true , если шаблон найден, как это было бы в примере выше.

Пример замены всех с помощью DOTALL

Если я хочу заменить блок кода с тройной обратной связью тегом (как я делаю в своем прямом эфире), то я бы сделал это:

Что привело бы к этому:

public class Stock {

}

Сканер для синтаксического анализа

Я использовал Сканер в нескольких местах и забыл об этом, пока мне не напомнил один из моих постоянных зрителей потока (спасибо flamaddidle84 !). Сегодня я хотел разобрать некоторый текст и разделить строки всякий раз, когда между двумя непустыми строками была пустая строка.

Например, учитывая этот текст:

Block one.
Still part of block one.
Yep, still part of block one.

Block two here.
Still part of block two.

Last block here.

Я хочу закончить тремя фрагментами текста. Используя класс Сканер и тот факт, что разделитель может быть указан, это все, что мне было нужно:

Scanner scanner = new Scanner(text).useDelimiter("\n\n");

Затем, все, что мне нужно было сделать, это использовать метод scanner.tokens() (доступен только начиная с Java 9), чтобы предоставить мне поток этих блоков, например:

scanner.tokens()
       .map(s -> "

" + s + "

\n") .collect(Collectors.toList());

Который использует Замените/| на каждом блоке, чтобы окружить его HTML-кодом (абзац) тег. Вот полный пример кода:

При запуске это приводит к следующему результату:

Block one. Still part of block one. Yep, still part of block one.

Block two here. Still part of block two.

Last block here.

Если вы хотите посмотреть, как я использую TDD для программирования на Java и Spring, и учиться вместе со мной, настройтесь на мой ежедневный поток в Twitch. ТЕЛЕВИЗОР/Дрожащий . Обычно я транслирую с 12 вечера PDT (1900 UTC) около 3 часов. Вы также можете пообщаться со мной на мой разлад .

Оригинал: “https://dev.to/jitterted/live-coding-learnings-june-18-2019-6nb”