2011/04/07

文字列リストの重複をなくす



たとえば、パス文字列を保存したリストの重複をなくしたい時はどうするか。



(let ((l '("d:/work" "C:/foo/bar" "D:/work" "d:/work/lisp" "D:/work/lisp")))
(remove-duplicates l :test #'string-equal :from-end t))

("d:/work" "C:/foo/bar" "d:/work/lisp")


これ一発で終わり。


上の例は




  • 左優先にしたかったので、:from-end に t を指定

  • 大文字小文字の区別なしで一致を取りたかったので string= じゃなくて string-equal を指定


しといた。


windows でのパス文字列は、大文字/小文字の区別をせずに重複を取り除く必要があるから重宝する。


やれ、一旦すべて大文字にして比較しようかとか、ループで回すかとか、そんなの考えなくていい。





Related Posts Plugin for WordPress, Blogger...

0 コメント :

コメントを投稿