fso读取中文文件 按照中文里面的数字来排序

王朝站长·作者佚名  2012-01-09  
宽屏版  字体: |||超大  

这几天帮客户做一个自动上传数据的程序,做到最后发现 不会按照名称来排序,所有就得研究为什么了,好了直接来贴下数据好了

目录数据如下:

图片1

上面是客户 的一个目录里面的数据。当然他有很多。这些不在我们研究的范围内

刚程序程序是这样的

<%

dir = "shipin"

Set fso = CreateObject("scripting.FileSystemObject")'创建文件对象

Set f = fso.GetFolder(server.MapPath(dir)) '读取文件夹

Set ff =f.Files'取文件名称

For Each f1 in ff '循环目录

filename=f1.name'取得文件名称

Response.Write(filename)

Next

%>

这样就可以读取到这个目录的文件名称了,当然这个大家都会了

问题是他默认是 倒着来的。那么我们就要去改变他的排序方式。不同于php php的话有专门的函数可以解决,比如 ksort natsort

那么我们要怎么改变他了。一个思路就这样的。取文件的 名称并把中文过滤掉,然后利用循环判断每个数组大小 来改变,当然这样效率会变低。但是也没办法了。只能放他慢慢运行啊,如果大家有好的方法记得分享,代码如下:

<%

'取文件名称数组函数

function RegExpTestsp(str,pat)

Dim r, Match, Matches

Set r = New RegExp

r.Pattern = pat

r.IgnoreCase = false

r.Global = True

Set Matches = r.Execute(str)

For Each Match in Matches

RetStr = RetStr & Match.Value

Next

RegExpTestsp = RetStr

End function

pat="[\d]+"

'排序 函数

Function Sort1(input)

Dim outPut

'Dim input

Dim i

i=0

Dat=split(input,",")

For k=0 to Ubound(Dat)

For i=0 to ubound(Dat)-1

If int(RegExpTestsp(Dat(i+1),pat))

outPut=Dat(i)

Dat(i)=Dat(i+1)

Dat(i+1)=outPut

End If

Next

Next

'

For each outPut in Dat

Response.Write outPut&"

"

next

End Function

dir = "shipin"

Set fso = CreateObject("scripting.FileSystemObject")'创建文件对象

Set f = fso.GetFolder(server.MapPath(dir)) '读取文件夹

Set ff =f.Files

For Each f1 in ff '循环目录

filename=filename&f1.name&","

Next

'response.Write(filename)

Sort1(filename)

%>

这样就可以了! 这个程序大家利用到更加庞大的程序里面去。。转载请著名来之http://www.002t.cn/yingxiaoyuwangluo/724.html 智软品牌设计(小戴) 宁波网络公司

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有