主题:  中文字符的排序问题。

syzy

职务:普通成员
等级:1
金币:4.0
发贴:131
#12001/12/28 11:38:13
我从文件夹中读取文件名,其顺序是混乱的,我想进行排序,以前是用数组的办法,可以实现。不过我觉得挺麻烦,大家有没有其他更好的办法?



吃鱼专家

职务:普通成员
等级:6
金币:11.0
发贴:5312
#22001/12/28 13:28:31
如果不是与AW有关的问题,请不要在此发贴,会让人起一头雾水的



syzy

职务:普通成员
等级:1
金币:4.0
发贴:131
#32001/12/28 13:36:07
就是AW问题。在AW中对中文字符进行排序。读进来的文件名是一个大的字符串,每一行一个文件名,有好的办法使其按拼音顺序排列吗?或者其他顺序也行。

编辑历史:[这消息被syzy编辑过(编辑时间2001-12-28 13:38:30)]


吃鱼专家

职务:普通成员
等级:6
金币:11.0
发贴:5312
#42001/12/28 14:16:00
你动作真快啊,那我问你是用什么方式读进来的,怎么中文文件名会是一个大的字符串?你的AW是第几版的?



syzy

职务:普通成员
等级:1
金币:4.0
发贴:131
#52001/12/29 14:41:28
用Catalog("folder" [,"F" | "D"])。哪个版本都一样。



吃鱼专家

职务:普通成员
等级:6
金币:11.0
发贴:5312
#62002/1/4 9:46:55
弄出来的是文本,又不是字符串,SORRY,我不会



与人同乐

职务:管理员
等级:6
金币:18.0
发贴:3928
#72002/1/4 12:00:01
SortByvalue(list, 1)基本上是按拼音(内码)排序。

例如a:=a=["王三","王","赵四","李三","abc"]
SortByvalue(a, 1)之后就是["abc", "李三", "王", "王三", "赵四"]



吃鱼专家

职务:普通成员
等级:6
金币:11.0
发贴:5312
#82002/1/4 15:05:24
Y在上个帖子中说
引用:
SortByvalue(list, 1)基本上是按拼音(内码)排序。

例如a:=a=["王三","王","赵四","李三","abc"]
SortByvalue(a, 1)之后就是["abc", "李三", "王", "王三", "赵四"]


你有没有弄清是什么问题啊?
在不知道有什么东西时怎么排。哪来什么王赵李



syzy

职务:普通成员
等级:1
金币:4.0
发贴:131
#92002/1/4 22:15:36
Y说的并没错,原来我也是用SortByvalue做的排序,只是需要运用数组。其实我只是想知道有没有函数可以直接获得汉字的内码。谢谢各位的回复!



与人同乐

职务:管理员
等级:6
金币:18.0
发贴:3928
#102002/1/6 22:25:46
如果最终目标是为了文件名排序的话,查内码似乎复杂了些,比如会有“王二”和“王三”等情况。

用数组反而简单些:
aa:=Catalog("c:\\windows" ,"F" | "D")
I:=1
list_aa:=Array("",LineCount(aa))
--字符串拆分为数组元素
repeat while I<=LineCount(aa)
list_aa[I]:=GetLine(aa,I)
I:=I+1
end repeat
SortByvalue(list_aa, 1)

--排序后的数组元素合并为字符串
result:=""
I=1
repeat while I<=LineCount(aa)
result:=result^list_aa[I]^Return
I:=I+1
end repeat

result中保存的是排序后的字串。注意Catalog是大小写敏感的,而对文件名排序则不需要区分大小写,因此可以再用upcase处理一下。