常 常广荣 Unregistered / Unconfirmed GUEST, unregistred user! 2007-05-21 #1 有一堆数值如1,1.1,1.2.1.3,1.2,1.10,1.1.1,1.2.1 要求排序后 1,1.1,1.1.1,1.2,1.2.1,1.3,1.1.10 摆脱了
常 常广荣 Unregistered / Unconfirmed GUEST, unregistred user! 2007-05-21 #3 写错了 应该是1,1.1,1.1.1,1.2,1.2.1,1.3,1.10
C creation-zy Unregistered / Unconfirmed GUEST, unregistred user! 2007-05-21 #4 没见过有两个小数点的“数值”啊,楼主的排序对象应该是字符串吧? 将这些字符串中的数字变换成单字节字符就可以进行排序了——排好了后再反向转换为原 格式的字符串即可。 转换规则为:将字符串按照"."分割为若干个数字字符串,将其变换为对应整数的ASCII码 值组成新的字符串(例如:1 -> #1, 1.2.1 -> #1#2#1, 1.10 -> #1#10)。由于每一段数 字最终都变成了一个字符(只要不大于255,呵呵),所以就不会出现十进制的错位问题。 思路已经说了,至于具体的拆分编码、恢复算法,不难写——利用StringList的Delimiter 以及DelimitedText属性就可以轻松搞定,我就不写了。
没见过有两个小数点的“数值”啊,楼主的排序对象应该是字符串吧? 将这些字符串中的数字变换成单字节字符就可以进行排序了——排好了后再反向转换为原 格式的字符串即可。 转换规则为:将字符串按照"."分割为若干个数字字符串,将其变换为对应整数的ASCII码 值组成新的字符串(例如:1 -> #1, 1.2.1 -> #1#2#1, 1.10 -> #1#10)。由于每一段数 字最终都变成了一个字符(只要不大于255,呵呵),所以就不会出现十进制的错位问题。 思路已经说了,至于具体的拆分编码、恢复算法,不难写——利用StringList的Delimiter 以及DelimitedText属性就可以轻松搞定,我就不写了。
勇 勇者 Unregistered / Unconfirmed GUEST, unregistred user! 2007-05-22 #5 是2.1大还是1.10大,如果是1.10大,把小数字去掉再比较就可以了