删除Delphi中标记之间变量子字符串的所有实例
我正在将可读文本从HTML提取到字符串中,需要删除删除Delphi中标记之间变量子字符串的所有实例,delphi,delphi-xe,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] = '&
标记之间的现有文本。实现这一目标最有效的方法是什么
现在我是这样做的:
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;
函数removiedescripts(const s:string):string;
变量
i:整数;
InTag:布尔型;
开始
结果:='';
InTag:=假;
对于i:=1到长度(s)-3 do
开始
如果(s[i]='',则
inTag:=假
否则,如果不是InTag那么
结果:=结果+s[i];
结束;
结束;
有更好的方法吗?试试这样的方法:
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;
函数removiedescripts(const s:string):string;
变量
一、 J:整数;
开始
结果:=s;
I:=1;
重复
I:=PosEx(“”,结果,I+4);//4=长度(“”)
直到错误;
结束;
试试这些问题,从HTML中提取文本,忽略HTML标记的内容是很简单的,而且已经完成了。我的问题是,有时候有些网页会有一些小脚本,比如:而常规解析不会忽略它们。我知道我可以在应用常规HTML剥离之前重新解析查找序列,但我确信这不是删除这些脚本的最有效方法。要做到这一点,您需要一个HTML解析器,从HTML中提取可读文本的任何内容都应该已经剥离注释,因为它们从不包含可读文本。为什么你需要一个单独的通行证来清除评论?任何HTML解析器都会自动执行此操作。