Эквивалент Pascal substr

Я искал эквивалент Паскаля для (например) функции substr php, которая работает следующим образом:

$new_string = substr('abcdef', 1, 3);  // returns 'bcd'

Я уже нашел его, но я всегда занимаю слишком много времени, чтобы сделать это, поэтому я публикую ответ для других, как я, чтобы иметь возможность легко найти его.

3 ответов


Вы можете использовать функцию скопировать. Синтаксис идет:

copy(string, start, length);

строки в Pascal, похоже, индексируются, начиная с 1, поэтому следующее:

s1 := 'abcdef';
s2 := copy(s1, 2, 3);

в результате s2 = = 'bcd'.

надеюсь, это кому-то поможет.


Freepascal также имеет функцию копирования:

T:='1234567';
S:=Copy (T,1,2);   { S:='12'   }
S:=Copy (T,4,2);   { S:='45'   }
S:=Copy (T,4,8);   { S:='4567' }

Я рекомендую вам посмотреть Лазарь IDE.


    function substring(s: string; a, b: integer): string;
    var len: integer;
      procedure swap(var a, b: integer);
      var temp: integer;
      begin
        temp:= a;
        a:= b;
        b:= temp;
      end;
    begin
      if (a > b) then
        swap(a, b);
      len:= length(s);
      if ((len = 0) or ((a < 1) and (b < 1)) or 
          ((a > len) and (b > len))) then
      begin
        substring:= '';
      end
      else
      begin
        if (a < 1) then
          a:= 1;
        if (b > len) then
          b:= len;
        substring:= copy(s, a, b);
      end;
    end;