帮忙把表中元素按指定的顺序排序
本帖最后由 psufngah 于 2013-3-24 10:03 编辑("DB" "DD" "BP" "PP" "HH")需要按如下表中顺序来排( "HP" "BB" "UE" "HH" "BP" "PP" "SB" "SP" "DB" "CB" "DD" "DE" "CC" "DH")请高手帮忙写点思路。谢谢。
上面第一个表是程序读取出来的,有时不止五个,有时又少于五个,最多的时候和第二个表差不多,但第一个表的顺序不是我想要的,就是不管出几个元素,都需要按照第二个表的素顺序来排列。
没头没脑的,上面的表是怎样的次序?下面的表又是怎样次序?没有个关系怎么好排?
如果就是你所说的这样的表,直接构建一个不就行了。 樓主的提問很清楚啊 (setq Lstok '("HP" "BB" "UE" "HH" "BP" "PP" "SB" "SP" "DB" "CB" "DD" "DE" "CC" "DH"))
(setq Lst '("DB" "DD" "BP" "PP" "HH"))
(vl-remove-if-not
(function
(lambda (x) (member x Lst))
)
LstOk
)
(setq lst '( "HP" "BB" "UE" "HH" "BP" "PP" "SB" "SP" "DB" "CB" "DD" "DE" "CC" "DH")
l '("DB" "DD" "BP" "PP" "HH")
)
;;排序
(setq l (vl-sort l '(lambda (a b) (< (VL-POSITION a lst) (VL-POSITION b lst))))) 以上非常感谢!好用 还是版主厉害。 我对楼主提这个问题表示好奇。 本帖最后由 llsheng_73 于 2013-10-25 22:28 编辑
Gu_xl 发表于 2013-3-24 10:56 static/image/common/back.gif
得多向G版学习
看来没事多逛逛,有学到很多东东还可以混积分 不错,很好的函数。
页:
[1]