我自己写了两种算法都不理想,请求高人帮帮忙:
下面是我的其中一种算法:function removeBracket(s:ansistring):ansistring;
var
  stack1:string;
  i,j:integer;
  flag:boolean;
begin
flag:=false;
setlength(stack1,length(s));
j:=0;
for i:=0 to length(s)-1 do
begin
  if s[i] ='<' then
  begin
    flag:=true;
    Continue;
  end;
  if s[i]='>' then
  begin
    flag:=false;
    Continue;
  end;
  if flag then
     Continue;
  if not flag then
  begin
  stack1[j]:=s[i];
  j:=j+1;
  end;end;result:=stack1;
end;

解决方案 »

  1.   

    可以优化一下:
    function removeBracket(s:string):string;
    var
      i,j:integer;
      flag:boolean;
    begin
      flag:=false;
      setlength(Result,length(s));
      j:=1;
      for i:=1 to length(s) do
      begin
        if s[i] ='<' then flag:=true
        else if s[i]='>' then flag:=false
        else if not flag then
        begin
          stack1[j]:=s[i];
          Inc(j);
        end;
      end;
      Result[j] := #0;
      Result := PChar(Result);
    end;
      

  2.   

    試試這個﹕
    function  removeBracket(s:string):string;
    var
      i,left,right : integer;
    begin
      while ((pos('<',s)<>0) or (pos('>',s)<>0)) do
      begin
        left := pos('<',s);
        right := pos('>',s);
        delete(s,left,right-left+1);
      end;
      result := s;
    end;
      

  3.   

    打错了一点function removeBracket(s:string):string;
    var
      i,j:integer;
      flag:boolean;
    begin
      flag:=false;
      setlength(Result,length(s));
      j:=1;
      for i:=1 to length(s) do
      begin
        if s[i] ='<' then flag:=true
        else if s[i]='>' then flag:=false
        else if not flag then
        begin
          Result[j]:=s[i]; // !!!
          Inc(j);
        end;
      end;
      Result[j] := #0;
      Result := PChar(Result);
    end
      

  4.   

    好了,可以了,谢谢,效率很高,非常快,只是还有一些东西除不去,像"document.write("")//这样的东东,还有就是,去掉括号后,两个单词粘在一起了.
      

  5.   

    两个单词粘在一起 -〉可以把 < 或 > 替换成空格
    如果还要去其他东西,建议作个词法分析程序,delphi vcl中有个TParse可以参考