Delphi. Тема 7: «Обработка строковых данных»
«Обработка строковых данных» План темы: 1. Понятие символа и строки. 2. Описание символов и строк в программе. 3. Операция сцепления строк. 4. Операции сравнения строк. 5. Строковые процедуры и функции. 6. Примеры обработки строк.
• Символ – это элемент кодовой таблицы компьютера (буква, знак, управляющий символ). Каждый символ имеет свой уникальный численный код. • Каждый символ занимает в памяти 1 байт (в кодировке ANSI), или 2 байта (в кодировке Unicode).
• Строка - это последовательность (массив) символов. • ‘При использовании в выражениях символ и строка-константа заключается в кавычки-апострофы’. • Количество символов в строке (длина строки) может динамически изменяться от 0 до 255 (статические строки), или практически неограниченны (динамические строки).
• Для определения переменных символьного типа используются служебные слова: Char, Ansi. Char (1 байт); Wide. Char (2 байта). Пример: Var c 1: Char; c 2: Wide. Char;
• Для определения переменных строкового типа используются служебные слова String или Short. String, за которым может следовать заключенное в квадратные скобки значение максимально допустимой длины строки (статические строки), или Long. String (динамические строки). Пример: Var S 1, S 2 : String[20]; S : Long. String;
Соединяет несколько строк слева на право в одну. Знак операции: + (плюс). Примеры:
(=, <>, >, <, >=, <=) проводят сравнение двух строк. Сравнение строк производится слева направо до первого несовпадающего символа, и та строка считается больше, в которой первый несовпадающий символ имеет больший номер в кодовой таблице. Результат выполнения операций имеет логический тип - (True, или False).
• Delete(St, Poz, N) - удаление N символов строки St, начиная с позиции Poz. Delete(‘Алгоритм’, 1, 4) = ‘ритм’ • Insert(Str 1, Str 2, Poz) - вставка строки Str 1 в строку Str 2, начиная с позиции Poz. Insert(‘форма’, ’интика’, 3)=‘информатика’
• Str (N, St) - преобразование числового значения величины N и помещение результата в строку St. После N может записываться формат преобразования. Str(5, S) ==> S = ‘ 5’; Str(pi: 4: 2, S) ==> S = ‘ 3. 14’ • Val (St, N, Cod) - преобразует строку St в величину целочисленного или вещественного типа и помещает результат в N. В переменной Cod возвращается код операции (0 - нет ошибки; n - n-й символ не может быть частью числа). Val(‘ 5. 2’, R, Code) ==> R = 5. 2; Code = 0 Val(‘ 10 А кл. ’, R, Code) ==> R- не определено; Code = 3
Copy (St, Poz, N) - возвращает из строки St подстроку длиной N символов, начиная с позиции Poz. Copy(‘информатика’, 3, 5) = ‘форма’ • Chr(N) - возвращает символ с кодом N. Chr(192) = ‘А’ • Ord(C) – возвращает код символа C. Ord(‘А’) = 192 • Trim(St) – возвращает строку St, удалив в ней начальные и конечные пробелы.
• Length (St) - вычисляет и возвращает текущую длину в символах строки St. Результат имеет целочисленный тип. Length(‘Я учусь программировать!’) = 24 • Pos (Str 1, Str 2) - обнаруживает первое появление в строке Str 2 подстроки Str 1. Возвращаемый результат имеет целочисленный тип и равен номеру той позиции в строке Str 2, где находится первый символ подстроки Str 1. Если в Str 2 подстроки Str 1 не найдено, результат равен 0. Pos(‘о’, ’программирование’) = 3 Pos(‘не’, ’алгоритм’) = 0
• Ansi. Upper. Case(St) - возвращает строку, преобразовав все буквы к верхнему регистру (большие буквы). Ansi. Upper. Case(‘Среда Delphi!’) = ‘СРЕДА DELPHI!’ • Ansi. Lower. Case(St) - возвращает строку, преобразовав все буквы к нижнему регистру (маленькие буквы). • Ansi. Lower. Case(‘Среда Delphi!’) = ‘среда delphi!’
1. Задан текст. Заменить в нём ‘и’ на ‘i’. Подсчитать количество таких замен. var S: string; i, k : Integer; Begin {…Ввод строки S} k : = 0; For i : = 1 to length(S) do If S[i] = ‘и’ then begin S[i] : = ‘i’; k : = k + 1; end; {…Вывод S, k} End.
2. Вывести в компонент Memo кодовую таблицу отображаемых символов. var i: Integer; Begin Memo 1. Lines. Clear; For i : = 32 to 255 do Memo 1. Lines. Add(chr(i) + ‘ = ‘ + Int. To. Str(i)); End.