lilq_78 发表于 2011-11-14 10:29:25

两个字符串表相减怎么作比较简单?

两个字符串表相减怎么作比较简单?
如已知:表A   '("a" "b" "c" "1" "2" "3")
            表B   '("1" "2" "3")
要求得到的结果:
            表C   '("a" "b" "c" )

snddd2000 发表于 2011-11-14 10:34:17

本帖最后由 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)
)

Ea 发表于 2011-11-14 11:11:49

(setq a '("a" "b" "c" "1" "2" "3"))
(foreach x '("1" "2" "3")
(setq a (vl-remove x a))
)


lilq_78 发表于 2011-11-14 11:18:06

谢谢两位了,开始我也和snddd2000 你一样,老想着去循环来解决,
Ea 朋友的更加简单些,谢谢

vormittag 发表于 2011-11-14 12:01:15

问题好像描述得不够清晰,如果是下面的表你想获得什么结果?

("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") ?

snddd2000 发表于 2011-11-14 12:11:56

(defun list-subtract (list1 list2 / len2 n)
(mapcar '(lambda (x)
(setq list1 (vl-remove x list1))
)
list2
)
(princ list1)
(princ)
)
页: [1]
查看完整版本: 两个字符串表相减怎么作比较简单?