如:有一字符串 01234567890 我想把第3-5位换成 aaa ,变成 01aaa567890,请问如何实现?在VB中可以用如下代码,但delphi中苦苦找了好长时间没有发现,特在向高手求援。mid(str,3,3)="aaa"

解决方案 »

  1.   

    以String声明的字符串可以直接用下标啊(当然不能是常量)var
      S: String;
    S[3] := 'a';
    应该可以的:)
      

  2.   

    谢谢楼上的指点!var
      S: String;
    S[3] := 'a';
     
    只能替换1个位置呀,!
      

  3.   

    谢谢楼上的指点!var
      S: String;
    S[3] := 'a';
    应该可以的:)这个只能换1个字符呀,我想换的是N个连续字符?
    将其存入字符数组中,然后替换指定的字符,再重新转换成字符串,具体做法不用说吧?问题是后面重复的我不想替换,如 012345012345 我只想换前面的123,后面的不换,请问该如何做?
      

  4.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      Str:String;
      i:Integer;
    begin
      Str:='01234567890';
      For i:=3 to 6 do
        Str[i]:='a';
      ShowMessage(Str);
    end;
    你可以用个循环.我修改你的代码.
      

  5.   

    var
      S1,S2: String;
    begin
      S1 := ////////
      S2 := 'aaa';
      for i:=1 to 3 do
        S1[i+2] := S2[i]; //用S2换S1的3-5位
    end;
      

  6.   

    谢谢 ksaiy(消失在人海),请问我改成下面代码,为何提示Str[i]:=copy(instr,i-2,1) 这一行错误?procedure TForm1.Button1Click(Sender: TObject);
    var
      Str,instr:String;
      i:Integer;
    begin
      Str:='01234567890';
      instr:="abc"
      For i:=3 to 6 do
        Str[i]:=copy(instr,i-2,1);
      ShowMessage(Str);
    end;
      

  7.   

    唉,楼主用得着那么麻烦吗?默认String字串是可以用索引访问的,因此替换串时用copy(instr,i-2,1);没什么用处啊!直接用索引不好吗?
      

  8.   

    {------------------------------------------------------------------------------}
    //SourceString: 待处理字符串;SubString:需要替换的子字符串;BeginIndex,EndIndex:
    //分别为SourceString中开始和结束位置;
    //替换成功后传入的SourceString值改变,返回结果true;否则返回结果false;
    function TForm1.ReplaceSubString(var SourceString:String;SubString:string;
                                BeginIndex,EndIndex:integer):boolean;
    var
      i:integer;
    begin
      if (Length(SubString) <> (EndIndex-BeginIndex))
          or (Length(SourceString) < EndIndex)
          or (BeginIndex < 1)
          then
          begin
             result:= false;
             exit;
          end;
      for i:= 1 to (EndIndex-BeginIndex) do
        SourceString[i+BeginIndex]:= SubString[i];
      result:= true;
    end;