Стандартные операции со строками

  • LENGTH (s) – функция, которая возвращает текущую длину строки.
    Например,

    s := 'дисковод';

    writeln (length(s));

    результат: длина строки s равна 8

      
  • POS (ss, s)  - функция, которая возвращает номер позиции, с которой начинается подстрока ss в строке s. Если подстрока не найдена, то возвращается 0.
    Например,

s := 'дисковод';

s := 'дисковод';

s := 'дисковод';

s := 'дисковод';

ss := 'иск';

ss := 'овод';

ss := 'вода';

ss := 'о';

writeln (pos (ss, s));

writeln (pos (ss, s));

writeln (pos (ss, s));

writeln ( pos (ss, s));

результат: 2

результат: 5

результат: 0

результат: 5

 

Обращаем внимание, что функция pos находит первое вхождение подстроки в строку, остальные вхождения функция не ищет.

  • COPY (s, p, kol) - функция, которая возвращает подстроку длиной kol символов, выделенную из строки s, начиная с позиции p. Исходная строка s не изменяется. Если kol > length(s), то копирование происходит от позиции p до конца строки.
    s – исходная строка,
    p, kol – переменные целого типа.

Например,

s := 'дисковод';

ss := copy (s, 5, 4);

результат:  ss = 'овод'

 

  • DELETE (s, p, kol) – процедура, удаляющая из строки s количество символов kol, начиная с позиции p. В результате операции delete изменяется  строка s и ее длина.
    Если kol > length(s), то удаление происходит от позиции p до конца строки.
    s – исходная строка,
    p, kol  – переменные целого типа.

Например,

s := 'дисковод';

s := 'дисковод';

s := 'дисковод';

s := 'дисковод';

s := 'дисковод';

delete (s, 5, 5);

delete (s, length(s), 1);

delete (s, 1, 1);

delete (s, 5, 100);

delete (s, 10, 100);

результат: s = 'диск'

результат: s= 'дисково'

результат: s = 'исковод'

результат: s = 'диск'

результат: строка s не изменяется

 

  • INSERT (ss, s, p) – процедура, вставляющая подстроку ss в строку s, начиная с номера p.
    ss - заданная подстрока,
    s – исходная строка,
    p – номер в строке s, начиная с которого будет вставлена подстрока ss. При этом строка ss не изменяется, а строка s изменяется.

Например,

s := 'диск';

insert ('овод', s, 5);

результат: s = 'дисковод'

 

  • VAL (s, n, code) – процедура, переводящая строку s в число n (вещественного или целого типа). Если строку s можно по правилам языка рассматривать как соответствующее число, то code равно 0, если же сконвертировать строку s в число нельзя, то code отлично от 0.
    s – исходная строка,
    n – результат целого или вещественного типа,
    code – переменная целого типа, код завершения.

Например, пусть переменные n, r, code, s описаны следующим образом:

var n : integer;   r : real;  code : integer; s : string;

 

s := '1234';

s := '+1234';

s := '-1234';

s := '12-34';

s := '12.34';

s := 'дисковод 3.5';

val (s, n, code);

val (s, n, code);

val (s, n, code);

val (s, n, code);

val (s, r, code);

val (s, r, code); 

результат: n = 1234, code = 0

результат: n = 1234, code = 0

результат: n = -1234, code = 0

результат: n = 0, code = 3, 3-й символ не удалось сконвертировать в цифру

результат: r = 12.34, code = 0

результат: n = 0, code = 1 

 

  • STR (n, s) – процедура, переводящая число n в строку s.

n – исходное число,

s – полученная в результате конвертации строка.

 

Например, пусть переменные n, r, s описаны следующим образом:

var n : integer;   r : real;   s : string;

 

n := 1234;

n := -1234;

r := 12.34;

r := 1/2;

str (n, s);

str (n, s);

str (r, s);

str (r, s);

результат: s = '1234'

результат: s = '-1234'

результат: s = '1.234000000E+01'

результат: s = '5.0000000000E-01'

 

Пример 1. Подсчитать количество цифровых символов в строке.

 

var s : string;
               k, i : byte;

begin

   readln (s);

   for i :=1 to length (s) do

      if  ('0' <= s[i]) and (s[i] <= '9') then k := k + 1;

   writeln (k);

end.

 

Пример 2. Подсчитать количество цифровых символов в строке.

 

var s : string;
               k, i : byte;

begin

   readln (s);

   for  i :=1 to length (s) do

      if s[i] in ['0'..'9'] then k := k + 1;

   writeln (k, '- количество цифр в строке');

end.

 

Пример 3. Заменить все вхождения символа 'a' на символ 'b'.

 

var s : string;

        k, i : byte;

begin

   readln (s);

   for i := 1 to length(s) do

      if s[i] = 'a' then s[i] = 'b';

   writeln (s);

end.

 

Пример 4. Заменить все вхождения строки s1 на строку s2.

var s, s1, s2 : string;

       k, i : byte;

begin

    readln (s);

    readln (s1);

    readln (s2);

    while pos (s1,  s) <> 0 do

    begin

          k := pos (s1, s);

          delete (s, k, length (s1));

          insert (s2, s, k);

    end;

    writeln (s);  

end.

 

 

 

 

{ s - исходная строка  }

{ s1 - строка, которую надо заменить }

{ s2 - строка, которая заменяет собой s1 }

{ пока встречается искомая подстрока s1 в строке s }

 

{ находим позицию первого вхождения подстроки s1 в строке s }

{ удаляем в этом месте подстроку s1 }

{ и в это же место вставляем новую подстроку s2 }

 

{ выводим результирующую строку }


Адрес: 614039, г. Пермь, ул. Комсомольский проспект, 45
Телефон: +7 (342) 212-80-71
E-Mail: school9-perm@ya.ru
Вопрос администратору сайта