Строка в Паскале на самом деле представляет собой последовательность символов с необязательной спецификацией размера. Символы могут быть числовыми, буквами, пробелами, специальными символами или их комбинацией. Extended Pascal предоставляет множество типов строковых объектов в зависимости от системы и реализации. Мы обсудим более распространенные типы строк, используемые в программах.
Вы можете определить строку многими способами —
-
Символьные массивы — это символьная строка, представляющая собой последовательность из нулевых или более байтовых символов, заключенных в одинарные кавычки.
-
Строковые переменные — переменная типа String, как определено в Turbo Pascal.
-
Короткие строки — переменная типа String с указанием размера.
-
Строки с нулевым символом в конце — переменная типа pchar .
-
AnsiStrings — Ansistrings — это строки без ограничения длины.
Символьные массивы — это символьная строка, представляющая собой последовательность из нулевых или более байтовых символов, заключенных в одинарные кавычки.
Строковые переменные — переменная типа String, как определено в Turbo Pascal.
Короткие строки — переменная типа String с указанием размера.
Строки с нулевым символом в конце — переменная типа pchar .
AnsiStrings — Ansistrings — это строки без ограничения длины.
Паскаль предоставляет только один строковый оператор, оператор конкатенации строк (+).
Примеры
Следующая программа печатает первые четыре вида строк. Мы будем использовать AnsiStrings в следующем примере.
program exString; var greetings: string; name: packed array [1..10] of char; organisation: string[10]; message: pchar; begin greetings := 'Hello '; message := 'Good Day!'; writeln('Please Enter your Name'); readln(name); writeln('Please Enter the name of your Organisation'); readln(organisation); writeln(greetings, name, ' from ', organisation); writeln(message); end.
Когда приведенный выше код компилируется и выполняется, он дает следующий результат —
Please Enter your Name John Smith Please Enter the name of your Organisation Infotech Hello John Smith from Infotech
В следующем примере используются еще несколько функций, давайте посмотрим —
program exString; uses sysutils; var str1, str2, str3 : ansistring; str4: string; len: integer; begin str1 := 'Hello '; str2 := 'There!'; (* copy str1 into str3 *) str3 := str1; writeln('appendstr( str3, str1) : ', str3 ); (* concatenates str1 and str2 *) appendstr( str1, str2); writeln( 'appendstr( str1, str2) ' , str1 ); str4 := str1 + str2; writeln('Now str4 is: ', str4); (* total lenghth of str4 after concatenation *) len := byte(str4[0]); writeln('Length of the final string str4: ', len); end.
Когда приведенный выше код компилируется и выполняется, он дает следующий результат —
appendstr( str3, str1) : Hello appendstr( str1, str2) : Hello There! Now str4 is: Hello There! There! Length of the final string str4: 18
Строковые функции и процедуры Паскаля
Паскаль поддерживает широкий спектр функций и процедур, которые манипулируют строками. Эти подпрограммы варьируются в зависимости от реализации. Здесь мы перечисляем различные подпрограммы для работы со строками, предоставляемые Free Pascal —
функция AnsiCompareStr (const S1:; const S2 :): целое число;
Сравнивает две строки
function AnsiCompareText (const S1:; const S2 :): целое число;
Сравнивает две строки без учета регистра
функция AnsiExtractQuotedStr (var Src: PChar; Цитата: Char) :;
Удаляет кавычки из строки
функция AnsiLastChar (const S :): PChar;
Получает последний символ строки
функция AnsiLowerCase (const s :):
Преобразует строку в строчные буквы
функция AnsiQuotedStr (const S:; Цитата: Char) :;
Цитирует строку
функция AnsiStrComp (S1: PChar; S2: PChar): целое число;
Сравнивает строки с учетом регистра
функция AnsiStrIComp (S1: PChar; S2: PChar): целое число;
Сравнивает строки без учета регистра
функция AnsiStrLComp (S1: PChar; S2: PChar; MaxLen: кардинал): целое число;
Сравнивает L символов строк с учетом регистра
функция AnsiStrLIComp (S1: PChar; S2: PChar; MaxLen: кардинал): целое число;
Сравнивает L символов строк без учета регистра
функция AnsiStrLastChar (Str: PChar): PChar;
Получает последний символ строки
функция AnsiStrLower (Str: PChar): PChar;
Преобразует строку в строчные буквы
function AnsiStrUpper (Str: PChar): PChar;
Преобразует строку в верхний регистр
функция AnsiUpperCase (const s 🙂 :;
Преобразует строку в верхний регистр
процедура AppendStr (var Dest:; const S :);
Добавляет 2 строки
процедура AssignStr (var P: PString; const S :);
Назначает значение строк в куче
функция CompareStr (const S1:; const S2 :): целое число; перегрузки;
Сравнивает две строки с учетом регистра
function CompareText (const S1:; const S2 :): целое число;
Сравнивает две строки без учета регистра
Удаляет строку из кучи
процедура DisposeStr (S: PShortString); перегрузки;
Удаляет строку из кучи
function IsValidIdent (const Ident :): Boolean;
Является ли строка допустимым идентификатором Паскаля?
function LastDelimiter (const Delimiters:; const S :): Integer;
Последнее вхождение символа в строку
функция LeftStr (const S:; Count: Integer) :;
Получает первые N символов строки
функция LoadStr (Ident: Integer) :;
Загружает строку из ресурсов
функция LowerCase (const s:) :; перегрузки;
Преобразует строку в строчные буквы
функция LowerCase (const V: вариант) :; перегрузки;
Преобразует строку в строчные буквы
function NewStr (const S :): PString; перегрузки;
Выделяет новую строку в кучу
функция RightStr (const S:; Count: Integer) :;
Получает последние N символов строки
функция StrAlloc (размер: кардинал): PChar;
Выделяет память для строки
function StrBufSize (Str: PChar): SizeUInt;
Резервирует память для строки
процедура StrDispose (Str: PChar);
Удаляет строку из кучи
функция StrPas (Str: PChar) :;
Преобразует PChar в паскаль
function StrPCopy (Dest: PChar; Источник :): PChar;
Копирует паскаль
Функция StrPLCopy (Dest: PChar; Источник:; MaxLen: SizeUInt): PChar;
Копирует N байт строки паскаля.
функция UpperCase (const s 🙂 :;
Преобразует строку в верхний регистр