两个字符串表相减怎么作比较简单?
两个字符串表相减怎么作比较简单?如已知:表A '("a" "b" "c" "1" "2" "3")
表B '("1" "2" "3")
要求得到的结果:
表C '("a" "b" "c" )
本帖最后由 snddd2000 于 2011-11-14 10:37 编辑
;;; be subtracted= list1
;;; subtracted = list2
(defun list-subtract(list1 list2 / len2 n)
(vl-load-com)
(setq len2 (length list2)
n 0
)
(repeat len2
(setq list1
(vl-remove
(nth n list2)
list1)
)
(setq n (1+ n))
)
(princ list1)
(princ)
)
(setq a '("a" "b" "c" "1" "2" "3"))
(foreach x '("1" "2" "3")
(setq a (vl-remove x a))
)
谢谢两位了,开始我也和snddd2000 你一样,老想着去循环来解决,
Ea 朋友的更加简单些,谢谢 问题好像描述得不够清晰,如果是下面的表你想获得什么结果?
("a" "b" "c" "1" "2" "3" "1" "a" "2" "b" "3" "c" "3" "2" "1")
是("a" "b" "c" "a" "b" "c" )
还是("a" "b" "c" "1" "a" "2" "b" "3" "c" "3" "2" "1"),
抑或是("a" "b" "c""a" "b" "c" "3" "2" "1") ?
(defun list-subtract (list1 list2 / len2 n)
(mapcar '(lambda (x)
(setq list1 (vl-remove x list1))
)
list2
)
(princ list1)
(princ)
)
页:
[1]