Практика программирования (Бейсик, Си, Паскаль)


Обработка фрагментов строк


Под фрагментом строки понимают цепочку символов заданной длины, выделенную из исходной строки, начиная с указанной позиции. В частности, выделяемый фрагмент может состоять и из единственного символа. Кроме выделения фрагмента тем или иным способом к числу наиболее распространенных операций относятся действия по определению длины строки, объединению (конкатенации) символьных цепочек и поиску вхождения одной строки в другую.

В QBasic для выделения фрагментов используют системные функции LEFT? (выделение левой подстроки), RIGHTS (выделение правой подстроки) и MID$ (выделение внутренней подстроки). Последняя функция может выступать и в роли оператора, заменяющего старый фрагмент новым значением. Например:

LЕFТ$("Вася",1) 'выделяет "В"

LЕFТ$("Вася",2) 'выделяет "Ва"

RIGHT$("Вася",1) 'выделяет "я"

RIGHT?("Вася",2) 'выделяет "ся"

MID$("Вася",2,2) 'выделяет "ас"

MID$("Вася",3)="илиса" 'заменяет на "Василиса"

Функция (оператор) MID$ позволяет опустить третий аргумент, и тогда в соответствующей операции участвуют все конечные символы, начиная с ука-занного. В операторе MID$ присваиваемое значение может быть пустым, что эквивалентно удалению фрагмента.

В Паскале для выделения подстроки используется функция сору, аналогичная функции мю$:

s2 := copy('Вася',2,3); {выделяется 'ася'}

Для удаления или вставки фрагмента здесь используются процедуры delete

И insert: delete(s1,start,len);{удаляется len символов, начиная с позиции start} insert(s1,s2,start);{в строку s2, начиная с позиции start, вставляется строка s1}

Функции работы со строками в Си включены в состав заголовочного файла string.h. Для копирования строки или ее части в другую здесь можно воспользоваться одной из следующих функций:

strcpy(s1,s2); //копирует строку s2 в строку s1

strncpy(s1,s2,n); //копирует первые п символов из строки s2 в s1

Задавая аргумент-источник не ссылкой на начало символьного массива, а адресом любого его элемента, мы можем скопировать либо правую, либо среднюю подстроку:




- Начало -  - Назад -  - Вперед -