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

 


Связанные темы