Название: Искусственный интеллект. Строки, контекст и волны на Паскале
Автор: Сергей Соболенко
Издательство: Издательские решения
Жанр: Компьютеры: прочее
isbn: 9785449632814
isbn:
Илл.24. Процедура «очистки» строки от двойных-тройных пробелов, а также пробелов в начале и в конце строки.
Теперь постараемся подытожить то, что мы получили.
С помощью описанных процедур мы можем нормализовать текст, используя буквально несколько операторов.
Вернемся к нашей проблеме с кодировкой, но теперь будем во всеоружии:
Илл. 25. Обработка ненормализованной строки из кодировки Win, которая содержит лишние пробелы.
Здесь исходная строка написана в кодировке Win и содержит лишние пробелы. Мы перекодируем ее в кодировку DOS, с помощью процедуры Decodetodos, переводим в верхний регистр (и убираем лишние пробелы) с помощью процедуры Getups, и получаем последнее слово строки «раму».
Илл. 26. Нормализация данных привела к требуемому результату, нужному слову в нужном написании.
Следует упомянуть еще о нескольких базовых процедурах работы со строками в Паскале.
Преобразования строк
Str (N, S); – преобразует число N в строку S.
Иногда это требуется для операций над числовыми данными, например, для преобразования даты и времени в наборы символов строкового типа. Дело в том, что в Паскале мы не можем смешивать данные разных типов, и для этого требуется привести их к одному типу.
Для наглядности, рассмотрим процедуру, которая генерирует строку информации о завтрашней дате в читаемом формате. Результат должен выглядеть, допустим, так: «1 марта 2019 года». Все что у нас есть, это информация о дате сегодняшней, полученной посредством оператора GetDate. Эта информация кажется банальной, но в ней мы должны учесть в случае необходимости, содержит ли текущий месяц 30 или 31 день. Также стоит знать, является ли год високосным, если сегодня 28 февраля; стало быть завтрашний день может быть как первым днем календарной весны, так и 29 февраля. Как осуществить этот выбор?
Оператор Str здесь используется дважды в конце: для преобразования числа года и дня и последующей их конкатенации (иначе говоря, объединения) в одной строке.
Илл. 27. Листинг процедуры Gettomorrow, получающей точную завтрашнюю дату в формате строки.
Что происходит? В качестве выходной переменной процедуры мы указали единственную переменную S, в которую будет необходимо отправить результат – строку с датой. Далее, внутренними переменными мы описали Year (год), Month (месяц), Day (день) и Day_of_week (день недели); а также их строковые версии: Years, Months, Days. (Поскольку день недели в данном случае нам не интересен, мы не будем заниматься его описанием и преобразованием).
Первоначально, получив из операционной системы информацию о дате в формате чисел «GetDate СКАЧАТЬ