Учебники

Паскаль — Струны

Строка в Паскале на самом деле представляет собой последовательность символов с необязательной спецификацией размера. Символы могут быть числовыми, буквами, пробелами, специальными символами или их комбинацией. Extended Pascal предоставляет множество типов строковых объектов в зависимости от системы и реализации. Мы обсудим более распространенные типы строк, используемые в программах.

Вы можете определить строку многими способами —

  • Символьные массивы — это символьная строка, представляющая собой последовательность из нулевых или более байтовых символов, заключенных в одинарные кавычки.

  • Строковые переменные — переменная типа String, как определено в Turbo Pascal.

  • Короткие строки — переменная типа String с указанием размера.

  • Строки с нулевым символом в конце — переменная типа pchar .

  • AnsiStringsAnsistrings — это строки без ограничения длины.

Символьные массивы — это символьная строка, представляющая собой последовательность из нулевых или более байтовых символов, заключенных в одинарные кавычки.

Строковые переменные — переменная типа String, как определено в Turbo Pascal.

Короткие строки — переменная типа String с указанием размера.

Строки с нулевым символом в конце — переменная типа pchar .

AnsiStringsAnsistrings — это строки без ограничения длины.

Паскаль предоставляет только один строковый оператор, оператор конкатенации строк (+).

Примеры

Следующая программа печатает первые четыре вида строк. Мы будем использовать 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

В следующем примере используются еще несколько функций, давайте посмотрим —

Live Demo

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 🙂 :;

Преобразует строку в верхний регистр