Как удалить все содержимое до разделителя строк (включая разделитель), не зная фиксированной длины? - PullRequest
0 голосов
/ 17 апреля 2020

Предположим, эта строка:

uses Windows, Messages, SysUtils, {-} uCustom1, uCustom2, uCustom3;

как захватить все после {-}, не имея фиксированной длины для удаления в левую сторону? Вероятно, RightStr может помочь, но для этого требуется длина второго параметра, который я не знаю, как получить автоматически (это все, пока {-} в данном случае). Есть идеи?

1 Ответ

5 голосов
/ 17 апреля 2020

Я обычно использую эту функцию:

function TailOf(const Input, Delimiter : String) : String;
var
  P : Integer;
begin
  P := Pos(Delimiter, Input);
  if P > 0 then
    Result := Copy(Input, P + Length(Delimiter), MaxInt)
  else
    Result := '';
end;

var
  S : String;

  S := 'ab{cd}def';
  S := TailOf(S, '{cd}');
  //  S now = 'def'

Pos и Copy - это стандартные функции RTL, которые вы можете посмотреть в OLH.

У меня также есть дополнительная функция , HeadOf, которая возвращает содержимое строки до, но не включая разделитель, или всю строку, если разделитель не найден.

...