用循环做就可以了:
tmpstr := 'a*1c问题d*2e急g*3h';
for I := 1 to 3 do
begin
  repstr := '*' + inttostr(I);
  J := pos(repstr,tmpstr);
  if J <> 0 then
  begin
    tmpstr := copy(1,J,tmpstr) + 'M' + copy(J + 2,length(tmpstr) -J -1,tmpstr);
  end;
end;暂时没有测试,不过应该没有问题

解决方案 »

  1.   

    a:='a*1c问题d*2e急g*3h';
    a:=stringReplace(a,'*1','M',[rfReplaceAll]);
    a:=stringReplace(a,'*2','M',[rfReplaceAll]);
    a:=stringReplace(a,'*3','M',[rfReplaceAll]);
    如果你的*1,*2,*3是变的,那你写个循环从1到9就行了。
      

  2.   

    测试过了,其中一句写错了
    tmpstr := copy(tmpstr,1,J-1) + 'M' + copy(tmpstr,J + 2,length(tmpstr) -J -1);
      

  3.   

    试试使用StringReplace函数。
    StringReplace(sToHandle, '*', 'M', [rfReplaceAll])
    StringReplace(sToHandle, '1', '', [rfReplaceAll])去掉所有数字1。 
      

  4.   

    可以这样说,字符串为"a*12一*c问题d*24二567*e急g*3k三d98*h"
    最终写成"a*M*c问题d*M*e急g*M*h"
      

  5.   

    function f(mStr: string): string;
    var
      I: Integer;
      B: Boolean;
    begin
      Result := '';
      B := True;
      for I := 1 to Length(mStr) do
        if B then
          if mStr[I] = '*' then
            B := False
          else Result := Result + mStr[I]
        else if mStr[I] = '*' then begin
           Result := Result + '*M*';
           B := True;
        end;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      Caption := f('a*12一*c问题d*24二567*e急g*3k三d98*h');
    end;
      

  6.   

    function f(mStr: string): string;
    var
      I: Integer;
      B: Boolean;
    begin
      Result := '';
      B := True;
      for I := 1 to Length(mStr) do
        if B then
          if mStr[I] = '*' then
            B := False
          else Result := Result + mStr[I]
        else if mStr[I] = '*' then begin
           Result := Result + 'M'; //修改
           B := True;
        end;
    end;
      

  7.   

    function getTheSubStr(sTmp :string):string;
    var
       i :integer;
       sStr,sResult,sTmpStr :string;
       bIsFirst :boolean;
    begin
        bIsFirst := false;
        sResult := '';
        sStr := trim(sTmp);
        for i:= 1 to Length(sStr)  do
        begin
            sTmpStr := copy(sStr,i,1);
            if bIsFirst then
               begin
                   if sTmpStr = '*' then
                   begin
                       bIsFirst := false;
                       sResult := sResult + 'M' +sTmpStr;
                   end;
               end
            else
               begin
                   if sTmpStr = '*' then
                   begin
                       bIsFirst := true;
                   end;
                   sResult := sResult + sTmpStr;
               end;
        end;
        Result := sResult ;
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
      sTmp :string;
    begin
        sTmp := 'a*12一*c问题d*24二567*e急g*3k三d98*h';
        sTmp :=  getTheSubStr(sTmp);
        Application.MessageBox(pchar(sTmp),'答案',MB_OK+MB_ICONINFORMATION);
    end;
      

  8.   

    如果真如zfmich()所说的,那他的代码就可以实现了
      

  9.   

    stringreplace()是不是相当于vb中的replace()函数?