| Введение
Обработка текста - одна из часто встречающихся задач
программирования. Если требуется обработать какие-либо текстовые данные,
то без знаний того материала, что будет изложен ниже, просто не
обойтись. Особенно, если данные сформированы не лично вами, а какой-либо
сторонней программой или другим человеком.
Символ - это одна единица текста. Это буква, цифра, какой-либо знак. Кодовая таблица символов состоит из 256 позиций, т.е. каждый символ имеет свой уникальный код от 0 до 255. Символ с некоторым кодом N записывают так: #N.
Прямо так символы и указываются в коде программы. Так как код символа
представляет собой число не более 255, то очевидно, что в памяти символ занимает 1 байт и имеет числовой код в соответствии с таблицей кодов ASCII. Как известно, менее байта размерности нет. Точнее, она есть - это бит,
но работать с битами в программе мы не можем: байт - минимальная
единица. Так же посмотреть таблицу символов и их коды можно с помощью
стандартной утилиты "Таблица символов", входящей в Windows (ярлык расположен в меню Пуск - Программы - Стандартные - Служебные).Есть и другие кодовые таблицы, в которых 1 символ представлен не одним байтом, а двумя. Это Юникод (Unicode).
В таблице Юникода есть символы всех языков мира. К сожалению, работа с
Юникодом довольно затруднена и его поддержка пока что носит лишь
локальный характер. 2 байта также
называют словом (word). Отсюда и название соответствующего числового типа данных - Word
(число, занимающее в памяти 2 байта, значения от 0 до 65535).
Количество "ячеек" в таблице Юникода составляет 65536 и этого вполне
достаточно для хранения всех языков мира. Если вы решили, что "1 байт -
256 значений, значит 2 байта - 2*256 = 512 значений", советую вспомнить
двоичную систему и принцип хранения данных в компьютере. Строки
Строка, она же текст -
это набор символов, любая их последовательность. Соответственно, один
символ - это тоже строка, тоже текст. Текстовая строка имеет
определённую длину. Длина строки - это
количество символов, которые она содержит. Если один символ занимает 1
байт, то строка из N символов занимает соответственно N байт. Строка представляет собой особую форму одномерного
массива символов, которая имеет существенное отличие. Массив символов
имеет фиксированную длину (количество элементов), которая определяется
при описании. Строка имеет две разновидности длины:
- Общая длина строки, которая характеризует размер памяти, выделяемый строке при описании;
- Текущая длина строки (всегда меньше или равна общей длине), которая показывает количество смысловых символов строки в каждый конкретный момент времени.
Для работы с символами и строками существуют соответствующие типы данных:
Char - один символ (т.е. 1 байт); String
- строка символов, текст (N байт).
Официально строки вмещают лишь 255 символов. Для хранения больших текстов и текстов
со специальными символами существуют специальные типы данных AnsiString и WideString (последний, кстати, двухбайтовый, т.е. для Юникода). Действия с символами
- Для задания текстовых значений в Pascal используются одинарные кавычки (не двойные!). Т.е. когда вы хотите присвоить строковой переменной какое-либо значение, следует сделать это так: ch:='k';
Операции
#<положительная константа целого типа>
Результат - символ, номер которого в таблице ASCII соответствует
заданному числу. Например,
#100 = 'd' #39 = '''' {апостроф} #232 = 'ш' #1000 = 'ш' {потому что (1000 mod 256)= 232}
Стандартные функции
chr(c)
|
"превращает" номер символа в символ. Действие
этой функции аналогично действию операции #.
Например: c:= chr(48); {c: char} {c = '0'}
|
оrd(a)
|
Обратная к функции chr()
Например: a:=ord(‘0’) {a:byte} {a=48}
|
ord(chr(c)) = c и chr(ord(a)) = a
|
upcase(c)
|
превращает строчную букву в
прописную. Символы, не являющиеся строчными латинскими буквами,
остаются без изменения (в их число входят и все русские буквы).
Например: c:=’f’; upcase(c); Результат: c=F
|
Действия со строками- Над строками определены операции сравнения
<,>,=,<>,<=,>=.
- Две строки сравниваются посимвольно, слева
направо, по кодам символов.
- Если одна строка меньше другой
по длине, недостающие символы короткой строки заменяются символом
с кодом 0.
- Выражения типа char можно присваивать любым строковым переменным.
- Переменные,
описанные как строковые с разными максимальными длинами, можно
присваивать друг другу, хотя при попытке присвоить короткой переменной
длинную лишние символы будут отброшены.
- Строки можно объединять с помощью операции конкатенации, которая обозначается знаком + .
… s1 := 'John'; s2 := 'Black'; s1 := s1 + ' ' + s2;
// Результат: 'John Black'; - Если вы хотите жёстко ограничить длину текста, хранимого в строковой переменной, можно сделать это следующим образом:
var s:string[10]; {В скобках указывается максимальная длина строки.}
Символьная информация
|
Литерная (строковая) информация
|
Один символ
а:=’f ’;
b:=’*’;
c:=’4’; d:=’ ’
|
Строка символов
a:=’строка’;
b:=’текстовая
информация’
c:=’ ’ |
Процедуры и функции для работы со строками.
Функция возвращает в качестве результата значение текущей длины строки-параметра Пример. n := length('Pascal'); {n будет равно 6}
- Concat(s1,[s2,...,sn]:string):string
Функция выполняет слияние строк-параметров, которых может быть
произвольное количество. Каждый параметр является выражением строкового
типа. Если длина строки-результата превышает 255 символов, то она
усекается до 255 символов. Данная функция эквивалентна операции
конкатенации "+" и работает немного менее эффективно, чем эта операция.
- Copy(s:string; index:integer; count:integer):string
Функция возвращает подстроку, выделенную из исходной строки s, длиной count символов, начиная с символа под номером index. Пример. s := 'Язык Turbo Pascal'; s2 := copy(s, 1, 4); {s2 будет равно 'Язык'} s3 := copy(s, 6, 5); {s3 будет равно 'Turbo'} s4 := copy(s, 11, 6); {s4 будет равно 'Pascal'}
- Delete(var s:string; index,count:integer)
Процедура удаляет из строки-параметра s подстроку длиной count символов, начиная с символа под номером index. Пример. s := 'Система Turbo Pascal'; delete(s,8,6); {s будет равно 'Система Pascal'}
- Insert(source:string; var s:string;index:integer)
Процедура предназначена для вставки строки source в строку s, начиная с символа index этой строки. Пример. s := 'Язык Pascal'; insert('Turbo ',s,5); {s будет равно 'Язык Turbo Pascal'}
- Pos(substr,s:string):byte
Функция производит поиск в строке s подстроки substr. Результатом
функции является номер первой позиции подстроки в исходной строке. Если
подстрока не найдена, то функция возвращает 0. Пример. s := 'Язык Turbo Pascal'; x1 := pos('Pascal', s); {x1 будет равно 12} x2 := pos('Basic', s); {x2 будет равно 0}
- Str(X: арифметическое выражение; var st: string)
Процедура преобразует численное выражение X в его строковое представление и помещает результат в st.
- Val(s : string, u : integer, c : integer), где
s – строка, u – число из строки, с – код ошибки если преобразование не удалось.
Процедура преобразует строковое значение в
его численное представление.
<< 1 2
| |