求发票的下一个号码

简介: 求出下一个发票号,如FP001的下一个为FP002,FP 001 X的下一个为FP 002 X,FP 001 XN 002的下一个号码为FP 002 XN 002 总是取出第一个数字并加一,但是不足的位数要补零 函数如下: function GetNextFp(curNo:string):st...

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

相关文章
|
Java
深入理解 Java 8 函数式接口:定义、用法与示例详解
深入理解 Java 8 函数式接口:定义、用法与示例详解
721 2
|
SQL 存储 测试技术
提升50%+!Presto如何提升Hudi表查询性能?
提升50%+!Presto如何提升Hudi表查询性能?
291 0
|
XML 开发框架 .NET
【.NET Core】常见C#代码约定
【.NET Core】常见C#代码约定
125 5
|
C++
C++ 类的访问修饰符:深入解析
C++ 类的访问修饰符:深入解析
314 1
|
监控 架构师 持续交付
构建高效微服务架构:策略与实践
【2月更文挑战第17天】 在数字化转型的浪潮中,微服务架构以其灵活性、可扩展性和技术异构性的优势成为了企业软件开发的主流选择。本文将深入探讨构建高效微服务架构的关键策略,并结合实际案例分析如何在实践中落实这些策略。通过阐述微服务设计原则、服务拆分、服务治理以及持续集成与部署等方面的内容,旨在为开发者和架构师提供一套系统的方法论,以指导他们在复杂多变的业务环境中构建和维护高效的微服务系统。
阿里云个人博客备案网站名称怎么填写?
阿里云个人博客备案网站名称怎么填写?阿里云个人网站备案对网站名称是有要求的,网站命名不能出现博客、论坛、在线、社区、交流、分享、个人空间、爱好者、博客、导航、工作室、论坛、平台、热线、社区、社团、网络、网站、网址、主页、资讯、作品展示等词汇,阿里云百科分享阿里云个人网站备案名称要求:
1622 0
阿里云个人博客备案网站名称怎么填写?
|
存储 物联网 5G
Wi-Fi 6为啥那么快?
Wi-Fi 6为啥那么快?
255 1
Wi-Fi 6为啥那么快?
|
缓存 监控 小程序
第二季:8.线程池用过吗? ThreadPoolExecutor谈谈你的理解?【Java面试题】
第二季:8.线程池用过吗? ThreadPoolExecutor谈谈你的理解?【Java面试题】
155 0
|
测试技术
pytest(10)-常用执行参数说明
pytest单元测试框架中可以使用命令行及代码pytest.main()两种方式执行测试,且可以加入各种参数来组织执行测试。接下来我们来了解常用的执行参数的含义及其用法。 pytest中的执行参数根据作用的不同大致可以分为以下几类: 1. 指定测试用例 2. 控制执行过程 3. 结果展示 每个示例都会以 pytest.main()形式 及 命令行形式 两种方式进行说明。
pytest(10)-常用执行参数说明
|
Web App开发 前端开发 JavaScript
用SVG 制作 Sprites的图标系统(一)
我一直是图标字体的大力支持者。很多网站真的需要一个图标系统,图标字体提供了一个该死的精细系统。但是,我认为假设你对 IE 9+ 很好,使用内联 SVG 并且 <use> 引用图标的元素是一个优秀的系统。
306 0
用SVG 制作 Sprites的图标系统(一)