4754

Работа со строками в программировании

Лекция

Информатика, кибернетика и программирование

Работа со строками В реальных задачах часто встречаются объекты символьного типа – строки. Строка в Pascal трактуется как последовательность символов. В состав строки могут входить буквы латинского алфавита, кириллица, цифры, всевозможные знаки...

Русский

2012-11-25

1.12 MB

34 чел.

Работа со строками

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

Фрагмент таблицы символьной кодировки ASCII

Количество символов в строке называется ее длиной. Длина строки может динамически изменяться от 0 до 255. Пустая строка имеет нулевую длину.

Строковая константа – последовательность символов, заключенных в апострофы. Например:

’Это строковая константа’, ’123’.

Таким образом, при использовании в выражениях строка обязательно заключается в кавычки.

Два следующих друг за другом апострофа (’’), обозначают пустую строку, т.е. строку с нулевой длиной.

Строковая переменная описывается в разделе описания переменных:

Var <имя> : string [<максимальная длина строки>]

Например:
Var
Name: string[20];

St: string;

Если максимальная длина не указана, то она принимается равной 255 (по умолчанию).

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

Например: N[5], S[i], slovo[k+1] 

Индекс может быть положительной константой, переменной, выражением целого типа. Значение индекса не должно выходить за границы описания.

Для хранения и обработки отдельных символов используют переменные типа char. Значением переменной такого типа может быть любой один символ.

Например: var a: char; ch: char; 

Операции над строками

Выражения, в которых операндами служат строковые данные, называются строковыми. Над строковыми данными допустимы операции сцепления и операции отношения. 

Операция сцепления (конкатенации) (+) применяется для соединения нескольких строк в одну результирующую строку. Сцеплять можно как строковые константы, так и строковые переменные.

Например:

’Бейсик’ + ’Паскаль’ + ’Си’ + ’–’ + ’языки программирования высокого уровня’.
В результате получится строка:
’Бейсик Паскаль Си – языки программирования высокого уровня’.
Длина результирующей строки не должна превышать 255 символов.

Операции отношения =, <, >, <=, >=, <> позволяют произвести сравнения двух строк, в результате чего получается логическое значение (True или False). Операции отношения имеют более низкий приоритет, чем операции сцепления. Сравнение строк производится слева направо до первого несовпадающего символа, и та строка считается больше, в которой первый несовпадающий символ имеет больший номер в таблице символьной кодировки. Если строки имеют различную длину, но в общей части символы совпадают, считается, что более короткая строка меньше, чем более длинная. Строки равны, если они полностью совпадают по длине и содержат одни и те же символы.

Например:

Выражение

Результат

’True1’ < ’True2’

True

’Student’ > ’STUDENT’

True

’Студент’ <> ’ Студент’

True

Группа’ = ’Группа

True

 

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

Стандартные функции и процедуры для работы со строками

Функции  для работы с данными строкового типа

Обращение к функции

Действие

Пример

Copy (S, Poz, N)

Выделяет из строки S подстроку длиной N символов, начиная с позиции Poz. Здесь N и Poz - целочисленные выражения.

S:=’IBM-PC’;
S1:=Copy(S,5,2);

Результат: S1=’PC

Concat(S1,…,Sn)

Выполняет сцепление (конкатенацию) строк S1,S2,..,Sn в одну строку.

S1:=’Test’;
S2:=’-’;
S3:=’5’;
S:=Concat(S1,S2,S3);

Результат: S:=’Test-5’

Length(S)

Определяет текущую длину строки S. Результат – значение целого типа.

S:=’Test-5’;
n:=Length(S);

Результат: n=5

LowerCase(S)

Возвращает копию строки S, в которой все символы преобразованы в символы нижнего регистра (в строчные буквы). Работает только с буквами латинского алфавита.

S:= ’STUDENT’;
S:=LowerCase(S);

Результат:S=’student’

UpperCase(S)

Возвращает копию строки S, в которой все символы преобразованы в символы верхнего регистра (в прописные буквы). Работает только с буквами латинского алфавита.

S:= ’student’;
S:=UpperCase(S);

Результат:S=’STUDENT’

Trim(S)

Удаляет из строки S лидирующие и завершающие пробелы, а также управляющие символы.

S:='  Студент  ';
S:=Trim(S);

Результат: S='Студент'

TrimLeft(S)

Возвращает копию строки S с удаленными лидирующими пробелами и управляющими символами.

S:='  Студент  ';
S:=TrimLeft(S);

Результат:
S='Студент  '

TrimRight(S)

Возвращает копию строки S с удаленными завершающими пробелами и управляющими символами.

S:='  Студент  ';
S:=TrimRight(S);

Результат:
S='  Студент'

Chr(X)

Возвращает символ, указанный его ASCII-кодом. Здесь Х – значение целого типа. Результат – значение типа Char.

for i:=65 to 71 do
S:=S+Chr(i);

Результат: S=’ABCDEFG ’

Ord(S)

Возвращает ASCII-код указанного символа. Здесь S – переменная типа Char. Результат – значение целого типа.

S:='F';
Cod:=Ord(S);

Результат: Cod=70

Pos(S1, S2)

Обнаруживает первое появление в строке S2 подстроки S1. Результат – целое число, равное номеру позиции, где находится первый символ подстроки S1. Если такое появление не обнаружено, то результат равен 0.

S:=’abcdef’;
n:=Pos(’cd’,S);

Результат: n=3

Процедуры для работы с данными строкового типа

Обращение к процедуре

Действие

Пример

Delete(S, Poz, N);

Удаление N символов из строки S, начиная с позиции Poz.

S:=’abcdef’;
Delete(S,3,2);

Результат: S=’abef’

Insert(S1,S2,Poz);

Вставка строки S1 в строку S2, начиная с позиции Poz.

S:=’ЭВМ PC’;
Insert(’IBM-’,S,5);

Результат:
S=’ЭВМ IBM-PC

Str(X[:N[:M]],S);

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

x:= -23.60;
Str(x:6:1,S);

Результат: S=’ -23.6’

a:=-23.60;
b:=20.5;
Str(a+b:6:1,S);

Результат: S=’  -3.1’

Val(S,x,Cod);

Преобразовывает строку S в числовое значение. Параметр S должен содержать последовательность символов, которая может быть воспринята как действительное число со знаком. Параметр x может быть как действительным, так и целочисленным. В параметр Cod заносится код выполнения преобразования: 0, если преобразование выполнено успешно, или номер позиции, в которой произошла ошибка.

S:='-23.60';
val(S,x,Cod);

Результат: x=-23,6

Типовые задачи на обработку строк

Анализ символьных строк

 Пример. Ввести строку символов. Определить

1.      Сколько цифр в строке.

2.      Есть ли в заданной строке одинаковые символы.

3.      Составить перечень всех гласных латинских букв.

Изменение строк (замена, удаление, вставка символов, лексем) Пример Заменить во введенной строке строчные русские буквы на прописные.

Программный код

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

Фрагмент кода программы

Пример. Дана строка длиной до 254 символов. Удалить все знаки «+» перед символами, не являющимися цифрами.

Фрагмент программного кода

Пример. В заданной строке заменить все слова «всегда» на «часто».

Фрагмент программного кода

Пример. Дана строка, содержащая слова, разделенные пробелами. Преобразовать строку в массив слов (лексем -последовательность допустимых символов языка программирования для последующего разбора транслятором).

 

Фрагмент программного кода

Использование компонента Memo для ввода данных символьного типа, состоящих из нескольких строк

Пример. Ввести с помощью компонента Memo текст из русских букв, состоящий из нескольких строк. Сосчитать сколько в этом тексте букв ’а’.


 

А также другие работы, которые могут Вас заинтересовать

32168. ПЕРЕСТРАХОВАНИе И СОСТРАХОВАНИЕ 118 KB
  Сущность и роль перестрахования. Методы перестрахования. Особенности перестрахования рисков у нерезидентов. Сущность и роль перестрахования.
32169. Доходы, расходы и прибыль страховщика 143.5 KB
  Расходы страховой компании. Главной особенностью деятельности страховой компании является то что в отличие от сферы производства где товаропроизводитель сначала осуществляет расходы на выпуск продукции а потом уже компенсирует их за счет выручки от реализации страховщик вначале аккумулирует средства которые поступают от страхователя создавая необходимый страховой фонд а лишь после этого несет расходы связанные с компенсацией убытков по заключенным страховым соглашениям. Двойственный характер деятельности страховщика одновременное...
32170. ФИНАНСОВАЯ НАДЕЖНОСТЬ СТРАХОВЩИКА 104.5 KB
  Особенностью деятельности страховщика является обеспечение страховой защиты при условии аккумулировании средств в виде поступлений страховых премий в страховые резервы. Использование средств страховых резервов имеет целевое назначение. Страховщик в отличие от промышленных и коммерческих предприятий принимает от страхователя деньги не в обмен на материальный товар или услуги а в обмен на услугу которая обеспечивает страховую защиту в виде будущих страховых выплат только тем страхователям которые понесли урон и требуют финансовой помощи....
32171. Сущность, функции и роль страхования 52.5 KB
  Сущность функции и роль страхования. Возникновение страхования и основные этапы его развития. Сущность и функции страхования. Принципы страхования.
32172. Страховая терминология и классификация 44.5 KB
  Характеристика основных понятий договора страхования. Классификация страхования. Характеристика основных понятий договора страхования. Страховые термины можно условно разделить на три подгруппы: Страховые понятия и термины выражающие наиболее общие условия страхования.
32173. СТРАХОВЫЕ РИСКИ 61 KB
  Понятия риска связывается с осознанием опасности угрозы ненадежности неопределенности неуверенности случайности убытка. На протяжении продолжительного времени понятие риска не только ассоциировалось с отрицательными проявлениями жизненных ситуаций а и часто употреблялся как их синоним. В экономической литературе известны попытки сформулировать теоретическое определение понятия риска. Понятие риска в противоположность понятию неопределенности имеет практическое применение а потому его содержание требует объективного определения.
32174. Страховой рынок, его характеристика и государственное регулирование страховой деятельности 44 KB
  Страховой рынок его характеристика и государственное регулирование страховой деятельности. Государственное регулирование страховой деятельности в Украине. Государственное регулирование страховой деятельности в Украине. Государственное регулирование страховой деятельности осуществляется по трем основным направлениям: Правовое; Экономическое; Социальное.
32175. Страховая организация 84.5 KB
  Стратегия страховой компании. Ресурсы страховой компании. Не все страховщики имеют вид страховой компании. В Украине как и во многих других государствах основу страховой системы составляют компании в виде акционерных обществ.
32176. Актуарные расчеты 59.5 KB
  Основные показатели страховой статистики. С их помощью определяется: себестоимость и стоимость страховой услуги; доля каждого клиента в формировании страхового фонда; производится перерасчет страховых взносов при изменении условий договора страхования. Основными задачами актуарных расчетов являются: 1 изучение и классификация рисков по определенным признакамгруппам в рамках страховой совокупности; 2 исчисление математической вероятности наступления страхового случая определение частоты и степени тяжести последствий причинения...