首页 新闻 会员 周边

数字字符串排序

0
悬赏园豆:10 [已解决问题] 解决于 2010-05-06 10:20

数字字符串怎样才能正确排序?比如Dim a() As String = {"1.1.2", "1.1.12", "1.1.3", "1.1.112"},需要从小到大排序:{ "1.1.2", "1.1.3", "1.1.12","1.1.112"}。请问有什么好的意见或建议?在此,先谢过。

个人抽屉的主页 个人抽屉 | 初学一级 | 园豆:143
提问于:2010-05-05 16:31
< >
分享
最佳答案
0

转换成浮点数,然后再排序。封装一个类,做个浮点和字符串的对应关系就可以了。这样比较简单。

还有一个办法就是补0

string.Format("{0:0000000:00000000}", "1.23")

这样就把整数和小数部分补0 了,然后直接按字符串比较。

收获园豆:10
eaglet | 专家六级 |园豆:17139 | 2010-05-06 08:24
其他回答(4)
0

确定只有三位?做几层循环,分别分每个字符串给每一个字符串比较“最后一位”,并进行排序。

Astar | 园豆:40805 (高人七级) | 2010-05-05 16:54
上面的数字字符只是个例子,数字字符是不确定的,不止有三位数。
支持(0) 反对(0) 个人抽屉 | 园豆:143 (初学一级) | 2010-05-05 17:08
@个人抽屉:不止有三位也可以呀,如果位数不一样,就更直接判断那个大那个小了。
支持(0) 反对(0) Astar | 园豆:40805 (高人七级) | 2010-05-05 17:22
本人比较愚钝,能否说明白一些?
支持(0) 反对(0) 个人抽屉 | 园豆:143 (初学一级) | 2010-05-06 08:19
0

写一个普通数据的排序算法,然后在 if(a>b){换位置} 的条件判断部分增加判断你的数组类型大小的逻辑。

if(逻辑(a,b)){

换位置

}

逻辑(string a,string b){ 转换类型 、比较大小}

思路如此,不是很困难。

邢少 | 园豆:10926 (专家六级) | 2010-05-05 17:30
谢谢您的解答,现在就是想知道怎样判断数字字符串逻辑的大小?比如想得到结果"1.2.2"<"1.2.11",按照字符串排序会得到这样"1.2.2">"1.2.11".
支持(0) 反对(0) 个人抽屉 | 园豆:143 (初学一级) | 2010-05-06 08:23
0

去掉所有的“ .” 号,直接按照整数比较,排序再输出

winzheng | 园豆:8797 (大侠五级) | 2010-05-05 22:29
这样做有个问题,“1.2.1”>"1.1.22",去掉“.”后判断121<1122,达不到想要的结果。
支持(0) 反对(0) 个人抽屉 | 园豆:143 (初学一级) | 2010-05-06 08:25
0

如上面所说,去掉小数点变成整数,再进行排序。之后有几种方法

1.利用数据库,循环参数 数组,在库表里存成两列,一列是原数字字符串,一列是去掉 . 的int型。

然后 select  字符串 form 表 order by 数值型字段;取出存入新数组

2.把字符串,数值 对放到 dataset 里,用dataset排序,读取

3.完全写程序罗辑算法了

千羽 | 园豆:666 (小虾三级) | 2010-05-06 01:47
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册