Искусственный интеллект. Строки, контекст и волны на Паскале - страница 14

Шрифт
Интервал


» в строке.

Функция Pos достаточно хороша во многих случаях, однако особенностью строчных данных может быть и такой случай, когда подстрока встречается в строке несколько раз. В таком случае функция Pos вернет первое попадание в подстроку.

Например, следующее выражение



вернет значение 2, хотя символ «а» встречается здесь несколько раз и верными могли быть также значения 4, 9 и 12.

Копирование

Если нам требуется получить фрагмент текста, являющегося частью строки, можно использовать функцию Copy (S,N1,N2); Здесь N1 определяет, с какого символа будет производиться копирование, а N2 – число копируемых символов.

Например, действие



присвоит переменной S значение «мыла». Если мы изменим числовые значения, например, на «11, 4» – в переменной S окажется слово «раму»; при «1, 4» – это будет «Мама»; а при «6, 2» в переменной окажется слово «мы».

Также, одним из ключевых элементов работы с фрагментами текста является функция Length (S), позволяющая определять длину строки, чтобы не выходить за ее рамки.

Например,



присвоит переменной n значение 14 – число символов, содержащихся в строке.25

Рассмотрим и возможности построения более сложных конструкций с символами.

Предположим, переменной S присвоено значение «Мама мыла раму»; но нам известно только, что в ней находится три слова (длина которых неизвестна) и необходимо получить первое слово из этой строки, отправив его в переменную S2. Это действие мы можем выполнить так:



– ведь мы помним, что функция Pos находит первое совпадение подстроки, а в начале строки пробела у нас нет. Так в S2 попадет слово «Мама».

Если же нам требуется скопировать текст, следующий за первым пробелом, эта процедура будет выглядеть несколько сложнее:



Здесь, в качестве позиции для отсчета мы берем место нахождения в строке первого пробела и копируем следующие за ним символы за минусом числа символов, следующих до пробела включительно. Проверить верность этой формулы можно в следующей программе:


Илл. 6. Копирование фрагмента строки с помощью функций Copy и Pos, с целью получения части текста, следующего за первым словом в строке.


Результат – можно увидеть на экране:


Илл. 7. Результат работы программы копирования фрагмента текста.


Также, предположим, что нам необходимо скопировать последнее слово из строки. В данном случае, поскольку функция «Pos» нам не поможет, придется воспользоваться циклом, чтобы «вручную» установить место нахождения последнего пробела.