信息发布软件,b2b软件,广告发布软件
标题: vb.net排序文件名算法和实例教程 [打印本页]
作者: 宣传软件 时间: 2016-11-15 13:28
标题: vb.net排序文件名算法和实例教程
文件多了我们找起来会很困难,我们现在来做一个关于VB.NET文件名排序的一个小案例,以后你的文件都会按一定的顺序排列,也加快你的查询速度。
VB.NET文件名排序案例:
输入 : a1,a2,a10,a001 。我们知道,如果按照字符串比较,结果应该是 a001,a1,a10,a2,但我们期望的结果应该是a001,a1,a2,a10.
自己写了一个VB.NET文件名排序算法,请参考,或者有更好的算法,请赐教
- VB.NET code /*
- Return Value Description
- < 0 arg1 less than arg2
- 0 arg1 equivalent to arg2
- > 0 arg1 greater than arg2
- */
- int compare(const void* arg1,const void* arg2)
- {
- if (NULL==arg1||NULL==arg2)//address of item
- return 0;
- LPSTR lpText1 = *( TCHAR** )arg1; //content of item
- LPSTR lpText2 = *( TCHAR** )arg2; //content of item
- if (NULL==lpText1||NULL==lpText2)
- return 0;
- int nText1Len = _tcslen(lpText1);
- int nText2Len = _tcslen(lpText2);
- int nText1IndexHandled = 0;
- int nText2IndexHandled = 0;
- int nRet = 0;
- for (;;)
- {
- if (nText1IndexHandled==nText1Len||nText2IndexHandled==nText2Len) //don't compare complete since all are same, "ab","abc"
- {
- TCHAR chOffset1 = nText1IndexHandled<nText1Len?lpText1[nText1IndexHandled]:0;
- TCHAR chOffset2 = nText2IndexHandled<nText2Len?lpText2[nText2IndexHandled]:0;
- nRet = (int)((WORD)chOffset1-(WORD)chOffset2);
- break;
- }
- TCHAR ch1 = *(lpText1+nText1IndexHandled);
- TCHAR ch2 = *(lpText2+nText2IndexHandled);
- if (isdigit(ch1)&&isdigit(ch2)) // if digit, change to number and compare
- {
- TCHAR* lpNum1 = new TCHAR[nText1Len];
- TCHAR* lpNum2 = new TCHAR[nText2Len];
- if (NULL==lpNum1||NULL==lpNum2)
- return 0;
- memset(lpNum1,0,nText1Len*sizeof(TCHAR));
- memset(lpNum2,0,nText2Len*sizeof(TCHAR));
- extractnumber(lpText1,nText1Len,nText1IndexHandled,lpNum1);
- extractnumber(lpText2,nText2Len,nText2IndexHandled,lpNum2);
- nRet = comparenumber(lpNum1,lpNum2);
- delete[] lpNum1;
- delete[] lpNum2;
- }
- else
- {
- nRet = (int)((WORD)ch1-(WORD)ch2);
- nText1IndexHandled++;
- nText2IndexHandled++;
- }
- if (nRet!=0)
- break;
- }
- return nRet;
- }
- TCHAR* extractnumber(TCHAR* lpBuf,int nLen,int& nIndexBegin,TCHAR* lpNumber)
- {
- if (NULL==lpBuf||NULL==lpNumber)
- return lpNumber;
- for (int i=nIndexBegin,nIndex=0;i<nLen;++i,++nIndexBegin)
- {
- TCHAR ch = *(lpBuf+i);
- if (!isdigit(ch))
- break;
- lpNumber[nIndex++]=ch;
- }
- return lpNumber;
- }
- int comparenumber(TCHAR* lpNumber1,TCHAR* lpNumber2)
- {
- if (NULL==lpNumber1||NULL==lpNumber2)
- return 0;
- int nNum1Len = _tcslen(lpNumber1);
- int nNum2Len = _tcslen(lpNumber2);
- int nMaxLen = max(nNum1Len,nNum2Len);
- TCHAR* lpFormatNum1 = new TCHAR[nMaxLen+1];
- TCHAR* lpFormatNum2 = new TCHAR[nMaxLen+1];
- if (NULL==lpFormatNum1||NULL==lpFormatNum2)
- return 0;
- memset(lpFormatNum1,_T('0'),nMaxLen*sizeof(TCHAR));
- memset(lpFormatNum2,_T('0'),nMaxLen*sizeof(TCHAR));
- lpFormatNum1[nMaxLen]=0;
- lpFormatNum2[nMaxLen]=0;
- int nPos = 0, nRet = 0;
- int nIndex = nMaxLen-1;
- for (nPos=nNum1Len-1;nPos>=0;--nPos)
- lpFormatNum1[nIndex--]=lpNumber1[nPos];
- nIndex = nMaxLen-1;
- for (nPos=nNum2Len-1;nPos>=0;--nPos)
- lpFormatNum2[nIndex--]=lpNumber2[nPos];
- for (nPos=0;nPos<nMaxLen;++nPos)
- {
- nRet = lpFormatNum1[nPos]-lpFormatNum2[nPos];
- if (nRet!=0)
- break;
- }
- delete[] lpFormatNum1;
- delete[] lpFormatNum2;
- return nRet;
- }
作者: 宣传软件 时间: 2016-11-15 13:29
输入 : a1,a2,a10,a001
我们知道,如果按照字符串比较,结果应该是 a001,a1,a10,a2,但我们期望的结果应该是a001,a1,a2,a10.
自己写了一个算法,请参考,或者有更好的算法,请赐教
/*
Return Value Description
< 0 arg1 less than arg2
0 arg1 equivalent to arg2
> 0 arg1 greater than arg2
*/
int compare(const void* arg1,const void* arg2)
{
if (NULL==arg1||NULL==arg2)//address of item
return 0;
LPSTR lpText1 = *( TCHAR** )arg1; //content of item
LPSTR lpText2 = *( TCHAR** )arg2; //content of item
if (NULL==lpText1||NULL==lpText2)
return 0;
int nText1Len = _tcslen(lpText1);
int nText2Len = _tcslen(lpText2);
int nText1IndexHandled = 0;
int nText2IndexHandled = 0;
int nRet = 0;
for (;;)
{
if (nText1IndexHandled==nText1Len||nText2IndexHandled==nText2Len) //don't compare complete since all are same, "ab","abc"
{
TCHAR chOffset1 = nText1IndexHandled<nText1Len?lpText1[nText1IndexHandled]:0;
TCHAR chOffset2 = nText2IndexHandled<nText2Len?lpText2[nText2IndexHandled]:0;
nRet = (int)((WORD)chOffset1-(WORD)chOffset2);
break;
}
TCHAR ch1 = *(lpText1+nText1IndexHandled);
TCHAR ch2 = *(lpText2+nText2IndexHandled);
if (isdigit(ch1)&&isdigit(ch2)) // if digit, change to number and compare
{
TCHAR* lpNum1 = new TCHAR[nText1Len];
TCHAR* lpNum2 = new TCHAR[nText2Len];
if (NULL==lpNum1||NULL==lpNum2)
return 0;
memset(lpNum1,0,nText1Len*sizeof(TCHAR));
memset(lpNum2,0,nText2Len*sizeof(TCHAR));
extractnumber(lpText1,nText1Len,nText1IndexHandled,lpNum1);
extractnumber(lpText2,nText2Len,nText2IndexHandled,lpNum2);
nRet = comparenumber(lpNum1,lpNum2);
delete[] lpNum1;
delete[] lpNum2;
}
else
{
nRet = (int)((WORD)ch1-(WORD)ch2);
nText1IndexHandled++;
nText2IndexHandled++;
}
if (nRet!=0)
break;
}
return nRet;
}
TCHAR* extractnumber(TCHAR* lpBuf,int nLen,int& nIndexBegin,TCHAR* lpNumber)
{
if (NULL==lpBuf||NULL==lpNumber)
return lpNumber;
for (int i=nIndexBegin,nIndex=0;i<nLen;++i,++nIndexBegin)
{
TCHAR ch = *(lpBuf+i);
if (!isdigit(ch))
break;
lpNumber[nIndex++]=ch;
}
return lpNumber;
}
int comparenumber(TCHAR* lpNumber1,TCHAR* lpNumber2)
{
if (NULL==lpNumber1||NULL==lpNumber2)
return 0;
int nNum1Len = _tcslen(lpNumber1);
int nNum2Len = _tcslen(lpNumber2);
int nMaxLen = max(nNum1Len,nNum2Len);
TCHAR* lpFormatNum1 = new TCHAR[nMaxLen+1];
TCHAR* lpFormatNum2 = new TCHAR[nMaxLen+1];
if (NULL==lpFormatNum1||NULL==lpFormatNum2)
return 0;
memset(lpFormatNum1,_T('0'),nMaxLen*sizeof(TCHAR));
memset(lpFormatNum2,_T('0'),nMaxLen*sizeof(TCHAR));
lpFormatNum1[nMaxLen]=0;
lpFormatNum2[nMaxLen]=0;
int nPos = 0, nRet = 0;
int nIndex = nMaxLen-1;
for (nPos=nNum1Len-1;nPos>=0;--nPos)
lpFormatNum1[nIndex--]=lpNumber1[nPos];
nIndex = nMaxLen-1;
for (nPos=nNum2Len-1;nPos>=0;--nPos)
lpFormatNum2[nIndex--]=lpNumber2[nPos];
for (nPos=0;nPos<nMaxLen;++nPos)
{
nRet = lpFormatNum1[nPos]-lpFormatNum2[nPos];
if (nRet!=0)
break;
}
delete[] lpFormatNum1;
delete[] lpFormatNum2;
return nRet;
}
作者: senbza 时间: 2016-11-27 07:59
好店家。感谢,感谢。
作者: meili1 时间: 2016-11-27 17:08
,服务很好,功能也是按要求做的。主要是服务,还有教程,客服都是分工的挺好的。推荐!!
作者: a001hao 时间: 2016-11-27 18:32
。视频也清晰。感谢店家感谢淘宝。
作者: meng00123 时间: 2016-11-28 03:03
卖家,技术过硬,服务过好,就像巴黎欧莱雅,你值得拥有
作者: asz111 时间: 2016-11-28 16:13
错效率很高价格合理还会来的
作者: 大宝罗滴滴 时间: 2016-11-28 18:06
衍了事的嫌疑
作者: 武器 时间: 2016-11-29 01:53
,看样子好不错给个好评,已经习惯了
作者: jiandao1 时间: 2016-11-29 04:54
及时做出评价,系统默认好评!
作者: qingling520 时间: 2016-11-29 13:51
都不行,知道为啥吗?技术好人好解答好服务号对于我这样的白毛女来说,能给我弄明白了!那就是好!
作者: ctbvip 时间: 2016-11-29 17:55
的态度结果震惊了意想不到的事情发生了卖家承诺帮我做的图比我预期的还要好看,非常有震慑力,没装修前我店铺一天销量也就几十票装修完发布后店铺的转化率高了很多。,提升了太多销量大概有3倍吧。视觉冲击效果强大起来很多,非常明显。售前售后的小姑娘也很有责任心,态度温和有亲和力和柔和力给我留下了不可磨灭的印象
作者: 大宝罗滴滴 时间: 2016-11-30 00:33
,速度也很快,对于我的小白问题也耐心解答了,很好的店家
作者: shenyeben 时间: 2016-11-30 20:14
家。谢谢喽。我的同事们都很喜欢呢。下次再来哦
作者: 261741908 时间: 2016-11-30 20:15
很好,好评!
作者: a001hao 时间: 2016-12-1 00:02
小哥,技术非常的棒,服务超级热情,绝对的好评,小哥幸苦了~
作者: ziyang701 时间: 2016-12-1 10:01
快,页面设计很满意,而且也很,老板人不错,喜欢
作者: 紫逸风 时间: 2016-12-1 16:05
心的帮助设置模板,非常满意!
作者: zzjiuzi008 时间: 2016-12-1 22:58
强大,客户服务周到,技术讲解到位,产品用的放心,大家可以试试!
作者: 694012770 时间: 2016-12-3 14:42
意,对我的帮助非常的大,很满意
作者: meili1 时间: 2016-12-3 14:43
眉之急
作者: jh134724 时间: 2016-12-3 20:48
制作速度很快
作者: asz111 时间: 2016-12-4 15:18
,非常迅速!
作者: 紫逸风 时间: 2016-12-5 10:28
错。本人也很喜欢。谢谢店家了。
作者: xiaozhu168 时间: 2016-12-5 20:35
料不错,谢谢了
作者: yiyi2014 时间: 2016-12-5 22:09
板也非常耐心!
作者: mm5216299 时间: 2016-12-6 10:30
度快下载还来全5分
作者: meili1 时间: 2016-12-7 16:39
前面写错了是077服务很耐心到位@感谢@
作者: dccmdy 时间: 2016-12-7 23:18
不太了解的我,抱着试试的态度开始了第一次的合作,没有想到效果非常不错,在沟通的过程中,我也学会了很多装修知
作者: dccmdy 时间: 2016-12-8 00:31
,一般般
作者: feiyang2006 时间: 2016-12-8 10:14
常好,帮了我很大的忙,希望今后老板的生意越来越好,老板加油
作者: 大宝罗滴滴 时间: 2016-12-8 21:43
很不错的模板,谢谢了
作者: 阿拉丁 时间: 2016-12-9 04:55
急但卖家做的依旧一丝不苟喜欢谢谢!!
作者: senbza 时间: 2016-12-9 06:10
推荐的店铺,客服超级nice,远程装修,全5分,棒棒滴!
作者: niubt 时间: 2016-12-9 14:49
业,非常给力,赞
作者: pwl2015 时间: 2016-12-9 23:31
18号和33号,服务真好,不厌其烦地给我解决了很多问题,想说,在你们这里这网站,功能没得说,服务也没得说,想做不好都不可能。顺便说一下,这是我在这里做的第三个网站了。
作者: ziyang701 时间: 2016-12-10 01:42
底不错,经过沟通后达到了我要求的效果,虽然时间长了一点,但是值得。慢工出细活。满分,态度也很好。
作者: yiyi2014 时间: 2016-12-10 04:26
强大,便捷高效,店家也热情,非常满意
作者: a5206662 时间: 2016-12-11 10:25
述的一样好,质量也很好,发货速度快,效率高,谢谢店家,满意
作者: ziyang701 时间: 2016-12-11 23:55
不错,而且速度很快,下单后就马上帮忙操作。技术指导很有耐心,满意
作者: 我爱苏苏 时间: 2016-12-12 08:20
错,卖家服务态度也很好,很愉快的一次购物经历。
作者: ekmci 时间: 2016-12-13 06:04
真的一直在配合我
作者: anleeycn 时间: 2016-12-13 06:42
工作人员态度特别好最关键的是用起来功能太强大了
作者: a5206662 时间: 2016-12-13 07:08
家服务质量真心没说的,即使我是小白,卖家也做到了绝对的认真不糊弄!
作者: jingtai001 时间: 2016-12-14 16:26
术人员服务不错耐心热情
作者: ebxly 时间: 2016-12-14 21:27
处理速度非常快下次一定再代你真心谢谢你
作者: jzgsjt 时间: 2016-12-15 09:20
好评我很喜欢物流快服务态度好
作者: zzjiuzi008 时间: 2016-12-15 12:16
果不错
作者: qiaozong01 时间: 2016-12-15 12:37
值得好评,赞一个!!!
欢迎光临 信息发布软件,b2b软件,广告发布软件 (http://postbbs.com/) |
Powered by Discuz! X3.2 |