如: str:='这1是2一3个4字56符7串'; 再在想插入一个字符 %希望结果会是:str:='%这%1%是%2%一%3%个%4%字%5%6%符%7%串%';

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      str,tmp:   string;
      i:integer;
    begin
      str:='这1是2一3个4字56符7串';
      tmp:='';
      i:=1;
      while i<= Length(str) do
      begin      if (Ord(str[i])>127) and (i<Length(str)) then
          begin
              tmp:=tmp+'%'+str[i]+str[i+1];
              Inc(i);
          end
          else
            tmp:=tmp+'%'+str[i];
          inc(i);  end;
      tmp:=tmp+'%'  //tmp='%这%1%是%2%一%3%个%4%字%5%6%符%7%串%';end;
      

  2.   

    procedure (var s:string; c:char);
    var
      i:integer;
    begin
      i := 1;
      while i<=Length(s)+1 do
      begin
        Insert('%',s,i);
        if ByteType(s,i+1)=mbLeadByte then
          i:=i+3
        else
          i:=i+2;
      end;
    end;
    //end
    str:= '这1是2一3个4字56符7串 ';
    procedure(str,'%');
      

  3.   

    上面句“Insert('%',s,i);”改成“Insert(c,s,i);”
      

  4.   

    使用WideString;var
      str, s: WideString;
      i: Integer;
    begin
      str:= '这1是2一3个4字56符7串';  s := '%';  for i := 1 to Length(str) do
        s := s + str[i] + '%';  ShowMessage(s);
    end;