4754

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

Лекция

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

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

Русский

2012-11-25

1.12 MB

37 чел.

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

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


 

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

50530. Изучение детекторных характеристик детекторов 251 KB
  Диодный детектор. Детекторные характеристики диодного детектора при различной омической нагрузке. Транзисторный детектор.
50531. Генерация второй гармоники в твердотельном минилазере 1.36 MB
  Генерация второй гармоники в твердотельном минилазере для студентов нелазерных специальностей Москва 2007 г. Целью лабораторной работы является изучение принципа действия твердотельных лазеров и экспериментальное исследование основных параметров такого лазера при генерации второй гармоники. Данная лабораторная работа включает 3 этапа: 1 предварительное изучение методических указаний Особенности устройства и работы твердотельных лазеров 2 изучение принципа действия генераторов второй гармоники и...
50532. Гомогенизатор А1-ОГМ 260.5 KB
  Цель работы: Оценить технический уровень состояние гомогенизатора А1ОГМ и дать предложения по развитию его конструкции для повышения эффективности процесса гомогенизации. Изучить устройство и принцип работы гомогенизатора А1ОГМ. Определить теоретическую и экспериментальную производительности а также мощности привода гомогенизатора А1ОГМ при различном давлении гомогенизации и обработать результаты испытаний. Дать предложения по техническому обслуживанию гомогенизатора А1ОГМ.
50533. Введение в язык разметки гипертекста версии 5.06 MB
  Научиться использоватьосновные теги HTML принаписании страниц Web. Научиться форматироватьтекст средствами HTML. План Введение Языки разметки Создание файла HTML Основные теги Заголовки Стилевое оформление текста Гиперссылки Изображения Форматирование текста с помощью тега FONT Специальные символы горизонтальные линейки и другие разделители Обзор ресурсов Интернет и Всемирной паутины Резюме Терминология Типичные ошибки программирования Внешний вид документа Хороший стиль программирования Упражнения для...
50535. Основи роботи з Mathcad. Робота з текстом 101.5 KB
  Робота з текстом Мета роботи навчитися оформлювати робочий документ Mthcd текстовими коментарями та виконувати над ними операції форматування. Після завантаження Mthcd спілкування користувача із системою відбувається на рівні вхідної мови максимально наближеної до звичайної мови описання математичних задач. Документ створений у Mthcd зберігається у файлі типу .
50537. Проект базы данных по учету данных физических и юридических лиц с использованием Microsoft Access 563.5 KB
  В качестве инструмента построения базы данных использован Microsoft ccess. Вот только некоторые из преимуществ использования вычислительной техники при работе с какими либо данными документами: возможность оперативного контроля за достоверностью информации уменьшается число возможных ошибок при генерировании производных данных; сразу после ввода данные могут участвовать в различных операциях; возможность быстрого получения необходимых отчетов; существенная экономия времени и людских ресурсов при выполнении операций связанных с...
50538. ПРИБОР РЕГИСТРИРУЮЩИЙ ДИСК 250М 3.64 MB
  Кроме того можно заказать комплект принципиальных электрических схем прибора по форме: Комплект схем прибора регистрирующего ДИСК 250М. Для подключения прибора к компьютеру можно дополнительно заказать преобразователь интерфейсов ND6520. Таблица 1 Исполнения приборов Обозначение исполнения прибора Функциональные особенности исполнения 10 регистрация; цифровая индикация результата измерения источник питания внешних датчиков. Возможна работа прибора с узлом внешней термокомпенсации блоком соединительным выпускаемым на заводе и...