fso读取中文文件 按照中文里面的数字来排序
这几天帮客户做一个自动上传数据的程序,做到最后发现 不会按照名称来排序,所有就得研究为什么了,好了直接来贴下数据好了目录数据如下:
图片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 = RetStrMatch.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=filenamef1.name,
Next
'response.Write(filename)
Sort1(filename)
%
这样就可以了! 这个程序大家利用到更加庞大的程序里面去。。请著名来之 智软品牌设计(小戴) 宁波网络公司
页:
[1]