zxj763209179 发表于 2015-12-5 22:45:00

如何通过关键字提取表中的元素?

setq we ("a,123,111" "b,321,222" "c,345,333")如何通过关键字a提取a,123,111或关键字b提取b,321,222或关键字c提取c,345,333?

zxj763209179 发表于 2015-12-5 22:46:09

自己先顶一下

USER2128 发表于 2015-12-6 08:00:33

;;; by USER2128:
(defun aaa (lst key)
(car (vl-remove 'nil (mapcar '(lambda(x)
    (if (= (strcase (substr x 1 (strlen key))) (strcase key))
      x nil)) lst)))
)
(setq lst '("a,123,111" "b,321,222" "c,345,333"))
;;; (aaa lst "a,") ==> "a,123,111"
;;; (aaa lst "B,") ==> "b,321,222"
;;; (aaa lst "c")==> "c,345,333"

lijiao 发表于 2015-12-6 10:11:25

(cdr (assoc key (mapcar '(lambda(x) (cons (substr x 1 1) x)) lst)))

ivde 发表于 2015-12-6 10:46:00

(car (vl-member-if '(lambda(x) (wcmatch x "a*")) lst))

zxj763209179 发表于 2015-12-6 17:49:23

USER2128 发表于 2015-12-6 08:00 static/image/common/back.gif


谢谢

zxj763209179 发表于 2015-12-6 17:50:00

lijiao 发表于 2015-12-6 10:11 static/image/common/back.gif
(cdr (assoc key (mapcar '(lambda(x) (cons (substr x 1 1) x)) lst)))

谢谢!!

zxj763209179 发表于 2015-12-6 17:50:35

ivde 发表于 2015-12-6 10:46 static/image/common/back.gif
(car (vl-member-if '(lambda(x) (wcmatch x "a*")) lst))

谢谢!!!

winerfjy 发表于 2015-12-19 17:59:03

好东西值得分享
页: [1]
查看完整版本: 如何通过关键字提取表中的元素?