Строки

Mihail

Модератор
#1
В Pascal строкой называется массив из Литерных символов, где 0-ое значение занято размером строки.



Общее.
При объявлении строки можно задать её размер. Максимальный размер строки 255 символов. По умолчанию, если размер строки не указан явно, в Borland Pascal и Turbo Pascal размер строки будет равен 255 символов, в UCSD Pascal – 80. В FreePascal и Delphi не ограниченная переменная string имеет на самом деле имеет тип AnsiString который может занимать максимальный размер в памяти до 2 Гб это 2147483646 символов.

В Object Pascal строковая переменная так же имеет ограничение в 2 Гб.



Объявление строки.
Что бы объявить строку, в блоке var надо указать тип string и возможно указать кол-во элементов, по следующему шаблону:

<имя переменной 1>,<имя переменной 2>, … ,<имя переменной n>:string;

или

<имя переменной 1>,<имя переменной 2>, … ,<имя переменной n>:string[<кол-во символов в строке>][I];[/I]

Пример объявления строковой переменной:

Pascal:
var
  s: string;
  s1, s2: string[80];
Можно так же объявить строку, через объявления пользовательского типа.
Шаблон такого способа будет выглядеть так:

Pascal:
type
    <имя пользовательского типа> = string [максимальная длина строки];

var
    <имя переменной 1>,<имя переменной 2>, … ,<имя переменной n>: <имя пользовательского типа>;
Пример:

Pascal:
type
  MyString = string[80];

var
  s: MyString;
Процедуры, предназначенные для работы над строками:

Delete

procedure Delete(var Str: string; Poz: integer; Count: integer); — Из строки Str удаляет Count символов, начиная с позиции Poz.

Пример:

Pascal:
var
  Str: string;

begin

  Str := '123456789';
  Delete(Str, 3, 4);
  Writeln(Str);

end.
В результатае строка Str будет иметь значение ‘12789’ соответственно 4 символа начиная с третьего были удалены ‘3456’.

Insert

procedure Insert(S: string; var Str: string; Poz: integer); — Вставляет строку S в строку Str, начиная с позиции Poz.

Пример:

Pascal:
var
  Str: string;

begin

  Str := '123456789';
  Insert('000', Str, 3);
  Writeln(Str);
  Readln;

end.
В результатае строка Str будет иметь значение ‘120003456789’ соответственно была вставлена подстрока ‘000’ начиная с третьего символа.


Str

procedure Str[B]([/B]IR:[integer;real] [B];[/B] var Str: string); — Преобразует числовое значение IR в строку, и помещает его в строку Str.

Пример:

Pascal:
var
  S: string;

begin

  S := '';
  Str(123, S);
  Writeln(S);

end.
В результате строка S будет иметь значение ‘123’.



Val

Procedure Val[B]([/B]Str: string[B];[/B] var IR:[integer, real][B];[/B] var Error: integer); — Преобразует значение Str в целочисленный или вещественный тип и помещает результат в переменную IR. В переменную error будет помещаться позиция первого символа, на котором произошла ошибка.

Пример:

Pascal:
program StringToRealOrInteger;

var
  S: string;
  i, error: Integer;

begin

  S := '123a';
  Val(S, i, Error);
  Writeln(i);
  Writeln(Error);
В результате переменная i будет содержать число 123, а переменная Error число 4 .



Функции предназначенные для работы со строками:

Copy

Function Copy[B]([/B]Str: string[B]; [/B]Poz: integer[B]; [/B]Count: integer): String; — функция Сopy возвращает строку содержащую Count символов, начиная с Poz.

Пример:

Pascal:
var
  S, SCopy: string;

begin

  S := '123456789';
  SCopy := Copy(S, 2, 4);
  Writeln(SCopy);

end.
В результате в переменной SCopy будет строка ‘2345’ .


Concat(+)

Function Concat[B]([/B]s1: string; s2: string): String; — функция Concat возвращает слияние строк s1 и s2.
Так же можно использовать обычный символ +

Пример:

Pascal:
var
  S: string;

begin

  S := '123' + '4' + '5' + '678' + '9';
  Writeln(S);

end.
Pos

Function Pos[B]([/B]subs: string; s: string; from: integer:=1): String; — функция Pos возвращает номер первого вхождения символа subs(или нескольких символов) в строке s

Пример:

Pascal:
var
  i: integer;

begin

  i := Pos('456', '123456789');
  Writeln(i);

end.
В результате в переменной i будет содержаться число 4, что соответствует началу первого вхождения подстроки ‘456’ в строку ‘123456789’.



Так же к строкам можно применить логические операции:

‘=’ — операция равно. Если две строки равны результат будет TRUE, в противном случае FALSE.

<> — операция не равно. Если строки равны результат будет FALSE, в противном случае TRUE.

<,>- операции больше или меньше. Сравнивает две строки по алфавиту. так например ‘a'<‘bc’ и ‘ab'<‘c’ и ‘A'<‘a’.

Пример:

Pascal:
begin

  Writeln('Àíòîí'<'John'); {FALSE}
  Writeln('Anton'='John'); {FALSE}
  Writeln('Anton'='Anton'); {TRUE}
  Readln;

end.
 
Вверх