如何实现字符加串加1,如(fg00100227)变到(fg00100228).....

解决方案 »

  1.   

    拆分-〉转换成Integer类型-〉加一-〉使用format补位-〉合并
      

  2.   


    uses StrUtils;function IncreamNo(sNo: String): String;
    var
      iPos : Integer;
      iLen : Integer;
      iNo  : Integer;
    begin
      iPos := Length(sNo);
      while (iPos > 0) and (sNo[iPos] in ['0'..'9']) do dec(iPos);
      if iPos > 0 then
      begin
        iLen := Length(sNo) - iPos;
        iNo := StrToInt(Copy(sNo, iPos + 1, iLen));
        Result := Copy(sNo, 1, iPos) + RightStr(StringOfChar('0', iLen) + IntToStr(iNo + 1), iLen);
      end
      else
        Result := sNo;
    end;//测试
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      ShowMessage (IncreamNo('fg00100227'));
    end;
      

  3.   

    你怎么发了两个贴子呢
    参照一下这个贴子吧.
    http://topic.csdn.net/u/20080214/09/107b0a7e-37c1-4597-b573-b70186c7c4c9.html
      

  4.   

    串里面的非数字编码一般总是能够确定的 
    楼主的意思可能是说后面数字编码部分中,具体前面有多少个0不确定 
    其实这个问题很好解决的,将数字部分转换成整型然后加1是很容易的,这时得到一个整型变量,假定为n 
    那么要转换成相应的字符串的话,可以: 
    1、使用笨办法转化: 
    {假设数字部分编码的长度变量为len, 目标字符串变量为s}
    //  len := Length(s);
    //  n := StrToInt(s) + 1;
      s := IntToStr(n);
      s := DupeString('0', len - Length(s)) + s;
    2、或者使用格式化字符串的函数: 
    {假设数字部分编码的长度变量为len}
    FormatMaskText(DupeString('0', len), IntToStr(n)); {说明:第二种办法我没有测试过}
      

  5.   

    function IncChar(var C: Char): Boolean;
    begin
      Result := C = '9';
      if Result then
        C := '0'
      else
        Inc(C);
    end;function IncNO(const AData: string): string;
    var
      L: Integer;
    begin
      L := Length(AData);
      Result := Copy(AData, 1, L);
      while IncChar(Result[L]) do Dec(L);
    end;