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


Обработка фрагментов строк - часть 2


strcpy(s1, &s2[k]); //копирует правую подстроку из s2 в s1

strncpy(s1, &s[2],n); //копирует среднюю подстроку из s2 в s1

Длина строк в рассматриваемых системах программирования определяется одной из системных функций LEN (QBasic), Length (Паскаль) или strlen (Си). Единственным аргументом у каждой из них является анализируемая строка.

Для конкатенации (объединения) строк в Паскале и QBasic используется довольно естественная операция сложения:

А$="Здравствуй, "+NAME$+"!" s1:='3дравствуй, '+nаmе+'!'

В Си эта операция реализуется с помощью одной из следующих функций:

strcat(s1, s2); //добавляет s2 к s1

strncat(s1, s2, n); //добавляет и первых символов из s2 к s1

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

Функция, определяющая в QBasic, входит ли значение строки А2$ в строку А1$, имеет вид:

INTSR(A1$,A2$) или INSTR(k,Al$,А2$)

В первом случае анализ вхождения ведется с начала строки AI$, во втором случае — начиная с k-й позиции строки AI$. Последний вариант позволяет последовательно определить все вхождения искомого образца.

Примерно такими же возможностями обладает функция pos(si,s2) в Паскале. Для поиска повторного вхождения можно удалить уже исследованный фрагмент и снова обратиться к функции роз.

Гораздо более разнообразные варианты поиска вхождений предлагает Си:

strstr (s1,s2); //ищет вхождение строки s2 в s1

strchr(s1,с); //ищет вхождение символа "с" с начала строки s1

strrchr(s1,с); //ищет вхождение символа "с" с конца строки s1

strpbrk(s1,s2); //ищет вхождение любого символа из s2 в s1

strspn(s1,s2); //ищет вхождение любого фрагмента, составленного

//из символов s2 в s1




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