Pascal. Рядки символів типу String. Функції роботи з рядками символів

Рядки символів типу String. Функції роботи з рядками символів. Функції Concat, Copy, Delete, Insert, Length, Pos, Val, Str


Зміст


Пошук на інших ресурсах:

1. Функція Concat. Конкатенація (додавання) рядків

Для конкатенації (додавання, зчеплення) рядків використовується функція Concat. Загальна форма використання функції наступна

ResStr := Concat(S1:string; S2:string [; ... SN:string])

тут

  • S1, S2, SN – рядки, які потрібно об’єднати;
  • ResStr – результуючий рядок.

Для виклику функції потрібно вказувати як мінімум один рядок-параметр. Результат виконання функції – результуючий рядок типу string.

Приклад.

program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
  S1, S2, S3, ResStr : String;

begin

  // Функція Concat() - конкатенація рядків
  S1 := 'Hello';
  S2 := ',';
  S3 := ' world';
  ResStr := Concat(S1, S2, S3, '!');

  Writeln(ResStr); // Hello, world!

  Readln;
end.

Результат виконання програми

Hello, world!

 

2. Функція Copy. Отримати копію підрядка з заданого рядка

Для виділення деякого фрагменту з рядка використовується функція copy, яка має наступне використання

ResStr := Copy(S, Start, Len);

де

  • S – рядкова величина типу String, з якої виділяється фрагмент;
  • Start – величина типу Integer, що визначає позицію початку фрагменту, який виділяється;
  • Len – величина типу Integer, що визначає кількість символів фрагменту, які потрібно виділити.
  • ResStr – результатом виконання цієї процедури є величина типу String.

Приклад.

program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
  S1, S2, S3: String;

begin
  // Функція Copy() - отримати підрядок з рядка
  S1 := '1234567890'; // вихідний рядок
  S2 := Copy(S1, 4, 3); // S2 = '456'
  Writeln(S2);

  S3 := Copy(S1, 8, 5); // S3 = '890'
  Writeln(S3);

  Readln;
end.

Результат виконання програми

456
890

 

3. Процедура Delete. Видалення підрядка з рядка

З допомогою процедури Delete можна видалити деякий фрагмент з рядка. Загальний вигляд процедури наступний:

Delete(S, Start, Len)

тут

  • S – рядкова величина, з якої видаляється фрагмент;
  • Start – порядковий номер першого символа фрагменту, що вилучається;
  • Len – кількість символів фрагменту, які потрібно видалити.

Приклад.

program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
  S : String;

begin

  // 1. Вихідний рядок
  S := 'ABCDEF';

  // 2. Видалити фрагмент CD
  delete(S, 3, 2); // S = 'ABEF'
  Writeln(S);

  // 3. Задати новий рядок
  S := '123456789';

  // 4. Видалити фрагмент '4'
  delete(S, 4, 1);
  Writeln(S);

  Readln;
end.

Результат виконання програми

ABEF
12356789

 

4. Процедура Insert. Додати підрядок до рядка

Щоб вставити в заданий рядок інший підрядок використовується процедура Insert. У загальному випадку використання цієї процедури наступне

Insert(S, S_new, Start);

тут

  • S – рядкова величина – фрагмент, що вставляється;
  • S_new – рядкова величина, в яку вставляється фрагмент S і де одержується результат вставки;
  • Start – порядковий номер символу в рядку S_new, перед яким вставляється фрагмент S. Значення Start нумерується з 1.

Приклад.

program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
  S1, S2, S3: String;

begin

  // Процедура Insert() - вставити підрядок в рядок

  // 1. Вставка на початок рядка
  S1 := 'ABCD';
  Insert('000', S1, 1);
  Writeln(S1);

  // 2. Вставка всередину рядка
  S1 := '12345678'; // Вихідний рядок
  S2 := 'ABC'; // Рядок вставки

  // Виклик процедури Insert
  Insert(S2, S1, 3); // S1 = 12ABC345678
  Writeln(S1);

  // 3. Додавання в кінець рядка
  S1 := '12345678';
  Insert('ABCD', S1, 9); // S1 = 12345678ABCD
  Writeln(S1);

  Readln;
end.

Результат виконання програми

000ABCD
12ABC345678
12345678ABCD

 

5. Функція Length. Отримати поточну довжину рядка

Для визначення довжини рядка застосовується стандартна функція Length. У найбільш загальному випадку використання функції може бути таким

Len := Length(S);

тут

  • S – рядок типу String;
  • Len – кількість символів у рядку S (довжина рядка).

Приклад.

program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
  S : String;
  Len : Integer;

begin
  // Функція Length() - отримати довжину рядка

  S := 'Hello, world!';
  Len := Length(S); // Len = 13
  Writeln(Len);

  Len := Length(''); // Len = 0
  Writeln(Len);

  Readln;
end.

Результат виконання програми

13
0

 

6. Функція Pos. Пошук підрядка в рядку

Для визначення місцеположення шуканого фрагменту рядкової величини можна скористатися функцією

position := pos(S_find, S);

тут

  • S_find – шуканий підрядок;
  • S – рядок;
  • Position – позиція, з якої починається підрядок S_find в рядку S. Значення Position є типу Byte і нумерується з 1. Якщо шуканого підрядка в рядку не існує, то Position = 0.

Приклад.

program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
  S : String;
  Position : Byte;

begin
  // Функція Pos() - визначити позицію входження підрядка в рядку

  // 1. Підрядок є в рядку
  S := '123456789';
  Position := Pos('345', S); // Position = 3
  Writeln(Position);

  // 2. Підрядка немає в рядку
  Position := Pos('ABCD', 'ABC'); // Position = 0
  Writeln(Position);

  // 3. В рядку є декілька входжень підрядка
  Position := Pos('AB', 'ABCD ABC ABD BAB'); // Position = 1
  Writeln(Position);

  Readln;
end.

Результат виконання програми

3
0
1

 

7. Процедура Val. Конвертувати рядок в число

Процедура Val дозволяє перетворити рядок в число. При цьому вважається, що рядок є представленням числа у символьній формі (наприклад, ‘2.85’, ‘1879’ ). Ця процедура робить зворотню операцію по відношенню до процедури Str.
У найбільш загальному випадку використання процедури Val має вигляд:

val(S, V, ErrCode);

тут

  • S – рядкова величина;
  • V – величина числового типу, який ви чекаєте отримати;
  • ErrCode – код результату виконання процедури. Якщо перетворення відбулося успішно, то ErrCode=0. Якщо з рядка S неможливо отримати число V, то ErrCode рівний номеру позиції в рядку S, яка не піддається перетворенню. Наприклад, для рядка ‘123A56’ виклик процедури Val поверне ErrCode = 4.

Приклад.

program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
  S : String;
  V1 : Integer;
  V2 : Real;
  Code : Integer;

begin

  // Процедура Val,
  // 1. Конвертувати String => Integer
  S := '286';
  Val(S, V1, Code);

  // Обробити результат
  if Code = 0 then
    Writeln('Ok! V1 = ', V1)
  else
    Writeln('Error! ErrCode = ', Code);

  // 2. Конвертувати String => Real
  S := '-38.25';
  Val(S, V2, Code);

  // Обробити результат
  if Code = 0 then
    Writeln('Ok! V2 = ', V2)
  else
    Writeln('Error! ErrCode = ', Code);

  // 3. Спроба конвертувати рядок, що містить недопустимі
  //    для числа символи.
  S := '18U7'; // тут недопустимі символи

  Val(S, V2, Code); // Code = 3

  if Code = 0 then
    Writeln('Ok! V2 = ', V2)
  else
    Writeln('Error! ErrCode = ', Code);

  Readln;
end.

Результат виконання програми

Ok! V1 = 286
Ok! V2 = -3.82500000000000E+0001
Error! ErrCode = 3

 

8. Процедура Str. Конвертувати число в рядок

Процедура Str є зворотною до процедури Val і дозволяє конвертувати величину числового типу (Integer, Real і т.д.) в рядок типу String. Загальна форма використання процедури наступна

str(V, S);

де

  • V – величина числового типу, значення якої перетворюється у рядковий вигляд;
  • S – результат перетворення рядкового типу.

Приклад.

program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
  S : String;
  V1 : Integer;
  V2 : Real;

begin

  // Процедура Str,
  // 1. Конвертувати Integer => String
  V1 := 277;
  Str(V1, S); // S = '277'
  Writeln('S = ', S);

  // 2. Конвертувати Real => String
  V2 := 8.53;
  Str(V2, S);
  Writeln('S = ', S);

  Readln;
end.

Результат виконання програми

S = 277
S = 8.53000000000000E+0000

 


Споріднені теми