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


 

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

23147. Український князь бє чолом рiднiй Українi (Євген Маланюк) 28 KB
  До самої смертi вiн прожив у НьюЙорку працюючи в iнженерному бюро. Малоросiйству вiн протиставляє мазепинство : опертя на прикладi гетьмана Iвана Мазепи на власнi сили церкву культуру. Найважливiшим етапом подолання цiєї хвороби Україною вiн вважає набуття державностi незалежностi нашого краю. 1923 року вiн ще повен надiй на революцiйне звiльнення своєї батькiвщини: Несамовитим криком крови Роздерлися твої уста: сурмиш у рупор пурпуровий Вагiтна бурями повстань .
23148. Феміністична проблематика повістей О.Кобилянської “Людина” і “Царівна” 121 KB
  ЖIНОЧИЙ IДЕАЛ ОЛЬГИ КОБИЛЯНСЬКОЇ ЗА ПОВIСТЯМИ ЛЮДИНА I ЦАРIВНА 4. АВТОРСЬКА ПОЗИЦIЯ У ПОВIСТI ОЛЬГИ КОБИЛЯНСЬКОЇ ЛЮДИНА ВИСНОВКИ СПИСОК ВИКОРИСТАНОЇ ЛІТЕРАТУРИ ВСТУП Тема даної курсової роботи Феміністична проблематика повістей О. В Людині а ще більше в Царівні особисте щастя героїнь Кобилянської більшою чи меншою мірою вже пов'язується з соціальними проблемами активною позицією людини в житті з необхідністю боротися з обставинами що сковують розвиток її духовних сил. Завдяки новаторству співзвучності прогресивним тенденціям...
23149. Феномен доби (сходження на голгофу слави) 183 KB
  Гріх казати: Тичинині попередники не були самі нездари. Так що сила яку Тичинині попередники витрачали на самоконсервування примножила його художні потенції. Для молодого Тичини навіть автора Соняшних кларнетів цей початковий період революції був своєрідною самопроекцією на широкий екран українського степу. Так як у Рільке: я водночас дитя хлопчак мужчина у Тичини та сама єдність стиснутість тривалості найлаконічніший образ людського життярадіння тільки не в індивідуальному вертикальному а в усезагальному індивідуальному через...
23150. Філософічність лірики Олега Ольжича 25 KB
  Така медитативність лірики Ольжича має приховану мету і символічний зміст. Стояти недбало на краю блакитної чаші безодні ризикуючи своїм життям це для Ольжича найбільша насолода найп'янкіший водограй найзаповітніша мрія. Отже проаналізувавши кілька віршів Ольжича ми виділили в них ряд надзвичайно важливих філософських проблем замислитись над якими має і сучасна людина.
23151. Художнє осмислення загальнолюдських цінностей у твоpчості Ліни Костенко 28 KB
  Ліна Костенко витвоpила духовний зpіз укpаїнської істоpії явила людстви складну щедpу на добpо і спpаглу до щастя і волі укpаїнську душу. Hеоціненним скаpбом людяності сили духу й добpоти сповнені поезії Ліни Костенко: Hе забувайте незабутнє І незнецінюйте коштовне Hе губіться у юpбі. Ліна Костенко багато pозміpковує над тим що ж лишає по собі людина.
23152. Шістдесятництво як явище 168.13 KB
  Зустрічі на яких громили шістдесятників відбулися у Києві Львові Харкові й Дніпропетровську. Влада не сиділа склавши руки: крім звільнень з роботи звільнили Василя Стуса Михайлину Коцюбинську Вячеслава Чорновола організовувалися мітинги робітників і колгоспників які засуджували дії шістдесятників. 28 листопада 1970 року за таємничих обставин була вбита одна з головних учасниць руху шістдесятників Алла Горська. Феномен молодості природний для кожного нового покоління у шістдесятників щасливо поєднався із зустрічною потребою...
23153. Життя і творчий шлях Юрія Клена 66.5 KB
  Вже в 20ті роки розкрилися ті особливості його манери письма які зближували Юрія Клена з неокласиками: досконале володіння мистецькою формою своєрідний панестетизм. 1943 року з'являється в світ збірка поезій Юрія Клена Каравели в якій автор спробував синтезувати творчі принципи київських неокласиків та ідейнохудожні шукання поетів празької школи. Вершинними здобутками Юрія Кленапоета є поеми Прокляті роки 1937 та Попіл імперій 1943 1947.
23154. Я хочу правді бути вічним другом і ворогом одвічним злу... творчість Василя Симоненка 27.5 KB
  Це очі Василя Симоненка поета якому судилося прожити усього 28 років але залишитися в пам'яті народній назавжди. Тому мабуть кожне наступне покоління буде вважати Василя Симоненка своїм однолітком і гортаючи сторінки знаходити в поезіях відгуки власних емоцій і почуттів. Найбільша любов поета це рідна земля Україна саме цій темі присвячена більшість творів Симоненка: Україно ти моя молитва ти моя розпука вікова.
23155. Ліна КОСТЕНКО БЕРЕСТЕЧКО 414 KB
  Кишить Вкраїна кишлами орди І Бог згортає чорними сувоями твоє терпіння виткане з біди НЕ ЖАЛІВ МЕНІ ХАН НІ ВИНА НІ КУМИСУ НІ МЕДУ. І розджохався хан усе причіпеньки шукав: Ти мене одурив проклятий ґяуре Я привів своє військо а ти мене ошукав Що ж ти хочеш козацький ти макогоне щоб у тих болотах мені жаба цицьки дала Ти ж казав що їх мало. Ти ж мені любий брат казав Гірей. Несу свій хрест на свої Голгочі А цар стромляє мені у спину Свої двойлезі каправі очі.