删除 [Delphi] 中剩余的多个字符串

Delete multiple string left in [Delphi]

你好,我需要一个简单的函数来删除左边的文本字符串,请看下面的例子:

procedure TForm1.Button1Click(Sender: TObject);
var
  S: string;
begin
  S := 'Hello test test test [delimitator] goodby.. test teest test';
  Delete(S, Pos('[delimitator]', S), MaxInt);
  RichEdit1.Text := S;
end;

这个函数清除右边的所有字符,即使我不知道有多少个字符。

问题是,如何反过来,删除左边的所有字符?

您已经知道要使用什么 - Pos()Delete()。只需调整如何使用它们:

procedure TForm1.Button1Click(Sender: TObject);
var
  S: string;
begin
  S := 'Hello test test test [delimitator] goodby.. test teest test';
  Delete(S, 1, Pos('[delimitator]', S));
  RichEdit1.Text := S;
end;

您可以使用以下函数来完成此操作。

Function GetRightPart(InputString, Delimiter : String) : String;
VAR
  HelpArr   : TArray<String>;
begin
   HelpArr := InputString.Split([Delimiter]) ;
   Result  := HulpArr[1];
end;

感谢大家的帮助。这个不是很专业,但是我得出了那个结论,可以单独使用,也可以一起使用。

procedure TForm1.Button2Click(Sender: TObject);
var
  left_delimitator,
  right_delimitator: integer;
  get_left, get_right,
  left_dbg, right_dbg: string;
begin
  RichEdit1.Clear;

  get_left  := 'test 123 [delimitator] all string left deleted.';
  get_right := 'all string rigth deleted. [delimitator] test 123';

  left_delimitator := Pos('[delimitator]', get_left);
  if left_delimitator > 0 then
  begin
    Delete(get_left, 1, Pos('[delimitator]', get_left));
    left_dbg := '[' + get_left;
    RichEdit1.Lines.Add( left_dbg );
  end;

  right_delimitator := Pos('[delimitator]', get_right);
  if right_delimitator > 0 then
  begin
    Delete(get_right, Pos('[delimitator]', get_right), MaxInt);
    right_dbg := '[delimitator]' + ' ' + get_right;
    RichEdit1.Lines.Add( right_dbg );
  end;
end;