4754

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

Лекция

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

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

Русский

2012-11-25

1.12 MB

46 чел.

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

В реальных задачах часто встречаются объекты символьного типа – строки. Строка в 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 текст из русских букв, состоящий из нескольких строк. Сосчитать сколько в этом тексте букв ’а’.


 

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

25559. Психология в эпоху Возрождения: основные тенденции в развитии философо-психологических взглядов 27.5 KB
  Поскольку человек есть часть природы то и душа его есть лишь проявление природы. Стремления и удовольствия требования природы человек должен их удовлетворять. Помпонацци 14621524 О бессмертии души Бог в делах природы участия не принимает. Человек есть результат развития природы причем у него как и у всего живого появляется психическое душевное названное термином дух захваченное из окружающей среды наиболее совершенное материальное вещество.
25560. Общие черты в развитии психологии Нового времени 26 KB
  : Рост производства Переход к капитализму Мануфактуры Тенденции характерные для философов: Отделение науки от религии: отказ от веры светский характер науки для того чтобы ускорить прогресс Источник познания: Сенсуализм родоначальник Ф.Бэкон Источник познания чувственный опыт. Источник познания мышление разум. Способы научного познания: Индуктивный: от частногоопыта к общему правилу Дедуктивный: от общего теории к частному частным ситуациям Что первично: психика или телесный мир Сенсуализм: сначала...
25561. Ф. Бэкон и оформление эмпирического принципа в философии и психологии 41.5 KB
  Бэкон и оформление эмпирического принципа в философии и психологии Ф. Бэкон 1561 1626 английский философ историк политический деятель основоположник эмпиризма. Бэкон родоначальник английского материализма и эмпирического направления в философии и психологии. Человек: Чувственная часть души проявляется в теле занимается наука Разум божественный занимается теология Суть основной философской идеи Френсиса Бэкона эмпиризма в том что в основе познания лежит исключительно опыт.
25562. Р. Декарт о «страстях души» 34 KB
  Декарт о страстях души Рене Декарт 15961650 лат. В трактате Страсти души 1649 представлена вся система философскопсихологических взглядов Декарта Картезианский дуализм: существует 2 субстанции: Протяженная телесная физика материализм в учении Мыслящая духовная метафизика светский идеализм в учении осн. Страсти тип или уровень деятельности который является продуктом взаимодействия тела и души. Состояния души кот.
25563. Детерминистическое учение Б. Спинозы о психике 31.5 KB
  Учение о единой субстанции ее атрибутах и модусах Стремился объяснить природу из самой себя. Ее сущность раскрывается в атрибутах Атрибуты такие существенные и всеобщие аспекты субстанции которые ей не тождественны и по отношению к которой они вторичные и производные. конкретные фундаментальные свойства субстанции Человеку доступны только 2 атрибута: мышления и протяжения Кстати Декарт Модусы частные состояния и видоизменения субстанции все многообразие мира различные явления и события По отношению к атрибуту протяжения каждый...
25564. Г. Лейбниц и его монадология 29 KB
  Монады истинные атомы природы душеподобные единицы. Они просты неделимы вечны автономны не влияют друг на друга Свойства монад: Активность стремление Изначально заданное содержание врожденные представления Жизнь монады стремление и переход от смутных представлений Перцепций к более ясным представлениям апперцепции Иерархия монад: Земные: Чистые монады есть активность нет представлений неживая вечно движущаяся материя Монадыдуши смутные представления низкая степень стремления к ясности растения животные...
25565. Т. Гоббс и его представления о природе психического 33.5 KB
  Состояния Чувственные эффекты внутренних противодвижений призраки или образы: Противодвижения в мозге возникновение образов вещей и представлений Противодвижения в сердце вызывают усиление торможение и следовательно удовлетворение неудовлетворение Исходная форма психического чувственный опыт Крайняя форма сенсуализма: в основе всего лежат ощущения и все психические состояния производные от них и все проходит через ощущение. Мышление целенаправленное оперирование образами представлений. Операции: Сложение соединение...
25566. Психологическая система взглядов Дж. Локка 33.5 KB
  от рождения идеи бога души добра и зла не даны. Сны по Локку это идеи бодрствующего человека соединенные между собой причудливым образом. Сами же идеи не возникают пока органы чувств не снабдят нас ими. Идеи содержание опыта ощущения образы восприятия представления памяти общие понятия аффективноволевые состояния Первоначально душа чистый лист на который при жизни внешний мир наносит воздействия.
25567. Учение И. Канта об априорных формах сознания 32 KB
  Группы связей в априорных формах мышления: Категории рассудка: Категории количества: единство множество цельность Категории качества: реальность отрицание ограничение Категории отношения: субстанция и принадлежность причина и следствие взаимодействие Категории модальности: возможность и невозможность существование и несуществование предопределенность и случайность Идеи чистого разума: Идея абсолютного субъекта предмет рациональной психологии Идея мира предмет рациональной космологии Идея бога предмет рациональной...