DELPHI的通配符比较(第五版)

本文介绍了DELPHI中的通配符比较函数,包括自定义的非递归算法,该算法在某些情况下比内置的MatchesMask()更快,并支持中文和大小写敏感/不敏感的选择。文中提供了一个名为isABClikeAX的函数示例,详细解释了其工作原理和性能测试结果。
摘要由CSDN通过智能技术生成


                      DELPHI的通配符比较(第五版)
           作者:李均宇        
              email:     e271828@163.net         2003.1.5
 
    我以前以为DELPHI中没有通配符的现成函数,后来找到了MatchesMask()。以前在未找到这个函数时我曾经在处于自由状态下尚有心情时便自已动手来作一个自定义的函数来实现这个功能。
    程序的算法较复杂,先在子串的末尾加上‘?*’,再读取子串,查找子串中的通配符之间的字符,亦即子串中的子串,然后在源串中依次查找是否含有子串中的子串,不过实现起来还是费不少周折。这个函数实现了以下功能:
1。可能大多数情形下比递归算法和MatchesMask()速度高些;
2。实现了对星号和问号的所有情况下的正确比较;//这点也许仍需时间验证
3。支持中文;//星号和问号要在英文下的才有效
4。支持大小写敏感的选择。

注意子串的开头和末尾加不加上星号是有区别的。这个算法与用递归算法实现的函数在用栈上可能相似,但实际上是有一些不同的,对递归作了一些改进而成,可能在大多数情形下比递归过程要快一些,快多少难定。至少有这样的估计:当通配符比较仅仅作为查找子串用时,如源串为“1111111111”子串为“*11111112*”时,使用递归算法的时间复杂度是O(N*M),但我写的这个函数这时将简化成大约调用几次POS()函数的时间复杂度,也许可以将DELPHI中的POS()想象成"克努特--莫里斯---普拉特(KMP)算法"下的O(N+M)。少量下与递归算

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值