Обработка символов и строк текста

advertisement
Обработка символов и строк текста
Символьный тип
В зависимости от компилятора Pascal символьный тип char занимает 1 или 2 байта. В компиляторе
FreePascal, Borland Pascal, Turbo Pascal и других традиционных компиляторах — 1 байт. В PascalABC.NET
— 2 байта.
Строковый тип
Строки имеют тип string, состоят из набора последовательно расположенных символов char и используются
для представления текста.
В компиляторах FreePascal, Borland Pascal, Turbo Pascal строка имеет максимальную длину 255. В
PascalABC.NET строки могут иметь произвольную длину. К символам в строке можно обращаться,
используя индекс: s[i] обозначает i-тый символ в строке, нумерация начинается с единицы. Если индекс i
выходит за пределы длины строки, то генерируется исключение.
Операция + для строк означает конкатенацию (слияние) строк. Например: 'Петя' + 'Маша' = 'ПетяМаша'.
Для описания строк заданного конечного размера используется тип string[n], где n - константа целого типа,
указывающая длину строки.
Функции Ord и Chr
Для преобразования между символами и их кодами в кодировке Windows (CP1251) используются
стандартные функции Chr и Ord:

Chr(n) - функция, возвращающая символ с кодом n в кодировке Windows;

Ord(с) - функция, возвращающая значение типа byte, представляющее собой код символа c в кодировке
Windows.
Обработка кода символа
Получение числового значения цифры
var
x:Integer;
c:Char;
begin
Read(c);
x := Ord(c) – Ord('0');
Write(c);
end.
Получение заданной буквы алфавита
var
x:Integer;
c:Char;
begin
Read(x);
c := Chr(Ord('a') + x);
Write(c);
end.
Обработка строк как массивов символов и при помощи специальных
функций
К строкам применимы все операции сравнения <, >, <=, >=, =, <>. Кроме этого, к строкам и символам
применима операция конкатенации (слияния) + , ее результат имеет строковый тип.
Например, 'a' + 'b'='ab'.
1. function Pos(subs,s: string): integer;
Возвращает позицию подстроки subs в строке s. Если не найдена, возвращает 0
2. function Length(s: string): integer;
Возвращает длину строки
3. function Copy(s: string; index,count: integer): string;
Возвращает подстроку строки s длины count с позиции index
4. procedure Insert(source: string; var s: string; index: integer);
Вставляет подстроку source в строку s с позиции index
5. function LowerCase(s: string): string;
Возвращает строку в нижнем регистре
6. function UpperCase(s: string): string;
Возвращает строку в верхнем регистре
7. function CompareStr(s1,s2: string): integer;
Сравнивает строки. Возвращает значение < 0 если s1 0 если s1>s2 и = 0 если s1=s2
8. procedure Val(s: string; var value: integer; var err: integer);
Преобразует строковое представление s целого числа к числовому значению и записывает его в переменную
value. Если преобразование успешно, то err=0, иначе err>0
9. procedure Val(s: string; var value: real; var err: integer);
Преобразует строковое представление s вещественного числа к числовому значению и записывает его в
переменную value. Если преобразование успешно, то err=0, иначе err>0
10. procedure Str(i: integer; var s: string);
Преобразует целое значение i к строковому представлению и записывает результат в s
11. procedure Str(r: real; var s: string);
Преобразует вещественное значение r к строковому представлению и записывает результат в s
Все эти функции, кроме разве только Length, могут быть реализованы самостоятельно, обращаясь к строке
как к массиву. Нет смысла это делать, если помнить и уметь использовать эти функции.
Download