串里面的非数字编码一般总是能够确定的 楼主的意思可能是说后面数字编码部分中,具体前面有多少个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)); {说明:第二种办法我没有测试过}
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;
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;
参照一下这个贴子吧.
http://topic.csdn.net/u/20080214/09/107b0a7e-37c1-4597-b573-b70186c7c4c9.html
楼主的意思可能是说后面数字编码部分中,具体前面有多少个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)); {说明:第二种办法我没有测试过}
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;