我正在将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;
有更好的方法吗?
答案 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;