zoukankan      html  css  js  c++  java
  • 求发票的下一个号码

    求出下一个发票号,如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'));

  • 相关阅读:
    c#声明数组
    【游戏物理】欧拉、龙格、韦尔莱
    当const放在function声明后
    【物理】AABB物理碰撞检测
    100 Path Sum
    Loop Unrolling 循环展开
    Unity Shader and Effects Cookbook问题记录
    【ShaderToy】画一个球体
    pymysql
    mysql表间的关系和查询
  • 原文地址:https://www.cnblogs.com/djcsch2001/p/2097768.html
Copyright © 2011-2022 走看看