求发票的下一个号码

求出下一个发票号,如FP001的下一个为FP002,FP 001 X的下一个为FP 002 X,FP 001 XN 002的下一个号码为FP 002 XN 002

总是取出第一个数字并加一,但是不足的位数要补零

函数如下:

function GetNextFp(curNo:string):string;
var
 iNum:LongInt;
 sPre,sLast,sTemp,sNum:string;
 MyRegExp,Matches:OleVariant;
begin
 MyRegExp :=CreateOleObject('VBScript.RegExp');
 MyRegExp.Global :=True;
 MyRegExp.Pattern :='(.[^\d]*)(\d+)(.*)';
 Result :=curNo;
 try
  if MyRegExp.Test(curNo) then
  begin
   Matches :=MyRegExp.Execute(curNo);
   sTemp :=Matches.Items[0].SubMatches[1];
   iNum :=StrToInt(sTemp)+1;
   sNum :=StringOfChar('0',Length(sTemp)-Length(IntToStr(iNum)))+IntToStr(iNum);
   sPre :=Matches.Item[0].SubMatches[0];
   sLast :=Matches.Item[0].SubMatches[2];
   Result :=Format('%s%s%s',[sPre,sNum,sLast]); 
  end;
 except
 end;
end; 

测试
Showmessage(GetNextFp('NTF0090PD71038KPU'));
Showmessage(GetNextFp('NTF0090'));
Showmessage(GetNextFp('0090'));
Showmessage(GetNextFp('TTT'));  
Showmessage(GetNextFp('NT 0090 X 001'));

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值