删除Delphi中标记之间的所有变量子字符串实例

时间:2012-07-18 20:46:13

标签: delphi delphi-xe

我正在将HTML中的可读文本提取为字符串,我需要删除<!---->标记之间的现有文本。实现这一目标的最有效方法是什么?

现在我这样做:

function RemoveIEScripts(const s: string): string;
var
  i: Integer;
  InTag: Boolean;
begin
   Result := '';
   InTag := False;
   for i := 1 to Length(s)-3 do
   begin
      if (s[i] = '<') and (s[i+1] = '!') and (s[i+2] = '-') then
         inTag := True
      else if (s[i] = '-') and (s[i+1] = '-') and (s[i+2] = '>') then
             inTag := False
           else if not InTag then
      Result := Result + s[i];
   end;
end;

有更好的方法吗?

1 个答案:

答案 0 :(得分:4)

尝试这样的事情:

function RemoveIEScripts(const s: string): string; 
var 
  I, J: Integer; 
begin 
  Result := s; 
  I := 1;
  repeat
    I := PosEx('<!--', Result, I);
    if I = 0 then Break;
    J := PosEx('-->', Result, I+4); // 4 = Length('<!--')
    if J = 0 then Break;
    Delete(Result, I, (J+3)-I); // 3 = Length('-->')
  until False;
end;