<br>&nbsp<font color=red>bc</font><TABLE&NBSP;WIDTH="520"&NBSP;BORDER="0"&NBSP;CELLSPACING="0"&NBSP;CELLPADDING="0">
怎么将"<"到">"中的&nbsp;替换成#32,而"<"到">"外面的&nbsp;不用替换

解决方案 »

  1.   

    StringReplace('1234','2','0',[rfReplaceAll]) ; // '1034'
      

  2.   

    大佬啊,用Stringreplace('***','*','*',[rfReplaceAll]);会把所有的&nbsp;都替换掉
    我只要替换部分!
      

  3.   

    s := '1234' ;  if Pos('2','1234') > 0 then
      begin
        Delete(s,Pos('2','1234'),Length('2')) ;
        Insert('0',s,Pos('2','1234')) ;
        ShowMessage(s) ;
      end ;
      

  4.   

    那就自己判断呗,看是不是在<里面,我觉得应该不是很难。
    var str,tempstr,resultstr : Stirng;
        I :Integer;
      replaceable:Boolean;
    begin
    for I := 1 to length(str) do
    begin
      replaceable:=str[i]<>'<' and str[i]<>'>';
      if not replaceable then
        resultstr:=resultstr+str[i];
      if str[i]='<' then
        tempstr:=tempstr+str[i];
      if str[i]='>' then
      begin
        replacestring(tempstr,'&nbsp','#32');
        resultstr:=resultstr+tempstr;
        tempstr:='';
      end;  end;
      

  5.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      p1, p2: Integer;
      s1, s2: string;
    begin
      s1 := '<br>&nbsp<font color=red>bc</font><TABLE&NBSP;WIDTH="520"&NBSP;BORDER="0"&NBSP;CELLSPACING="0"&NBSP;CELLPADDING="0">';
      p1 := Pos('<', s1);
      p2 := Pos('>', s1);
      while p1 > 0 do begin
        if p2 < 1 then Break;
        s2 := Copy(s1, p1, p2-p1+1);
        s2 := StringReplace(s2, '&nbsp;', #32, [rfReplaceAll, rfIgnoreCase]);
        s1 := Copy(s1, 1, p1-1) + s2 + Copy(s1, p2+1, Length(s1));
        if Pos('<', Copy(s1, p1+1, Length(s1))) > 0 then begin
          p1 := p1 + Pos('<', Copy(s1, p1+1, Length(s1)));
          p2 := p2 + Pos('>', Copy(s1, p2+1, Length(s1)));
        end else
          p1 := 0;
      end;
      ShowMessage(s1);
    end;
      

  6.   

    function ChangeStr(Str:String):String;
    var
      Tempstr: String;
      i: Integer;
      Flag: Boolean;
    begin
    for i := 1 to Length(Str) do
    begin
      if Str[i]='<' then
      begin
        Tempstr:= Tempstr+Str[i];
        Flag:= True
      end
      else if Str[i]='>' then
      begin
        Tempstr:= Tempstr+Str[i];
        TempStr:= StringReplace(TempStr,'&NBSP;',' ',[rfReplaceAll]);
        Result:= Result+TempStr;
        TempStr:= '';
        Flag:= False
      end
      else
      begin
        if Flag then
          TempStr:= TempStr+Str[i]
        else
          Result:= Result+Str[i]
      end
    end
    end;
      

  7.   

    自己编程序判断吧,从头查询,到'<'就开始替换状态,遇到'>'就结束替换状态。