明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 392|回复: 7

[提问] 去除含某个字符的元素列表

[复制链接]
发表于 2024-2-29 15:43 | 显示全部楼层 |阅读模式
本帖最后由 duhan6401 于 2024-2-29 16:06 编辑

我有这样的一个表,想去掉里面第四个元素不含进口也不含出口两个字的那个元素。这句是借鉴别人的,但是不对
  • (setq jzwsjnew  (vl-remove-if-not   '(lambda (x)    (member ( wcmatch (cadddr x)  "*进口/*出口")))  jzwsj  )   )
  • (("False" "0" "343.02" "1#磨盘山隧洞进口" "333.3" "8" "False") ("1#磨盘山隧洞" "219.828"
  • "342.5" "1#磨盘山隧洞出口" "333.186" "8" "False") ("1#埋管" "283.048" "341.6"
  • "2#田龙湾隧洞进口" "332.81" "8" "False") ("2#田龙湾隧洞" "696.975" "342.5" "2#田龙湾隧洞出口"
  • "332.67" "8" "False") ("2#埋管" "1640.668" "339.8" "3#猫湾隧洞进口" "329.22" "8"
  • "False") ("3#猫湾隧洞" "1799.171" "337.5" "3#猫湾隧洞出口" "329.141" "8" "False") ("3#埋管"
  • "1997.836" "339.7" "4#挖耳山隧洞进口" "328.15" "8" "False") ("4#挖耳山隧洞" "2089.393"
  • "342" "4#挖耳山隧洞出口" "328.1" "8" "False") ("4#埋管" "5108.85" "318.4" "5#工业园隧洞进口"
  • "329.22" "8" "False") ("5#工业园隧洞" "6697.795" "309" "5#工业园隧洞出口" "329.22" "8"
  • "False") ("5#埋管" "7079.585" "307.6" "6#屋基嘴隧洞进口" "296.6" "8" "False") ("6#屋基嘴隧洞"
  • "7209.585" "308" "6#屋基嘴隧洞出口" "296.535" "8" "False") ("6#埋管" "7251.585" "307.2"
  • "7#毛狗山隧洞进口" "False" "8" "False") ("7#毛狗山隧洞" "7782.496" "308" "7#毛狗山隧洞出口"
  • "False" "8" "False") ("7#埋管" "8165.7" "291.5" "2#大龙凼顶管进口" "False" "8" "False")
  • ("G348国道顶管" "8272.2" "293" "2#大龙凼顶管出口" "False" "8" "False") ("8#埋管" "9413.474"
  • "279.9" "釜溪河管桥进口" "284.88" "8" "False"))
  • 最后我想只留下包含有隧洞进口或者隧洞出口字眼的那一个


发表于 2024-2-29 15:52 | 显示全部楼层
本帖最后由 ssyfeng 于 2024-2-29 15:53 编辑

分开member,再用or函数就可以啦
发表于 2024-2-29 16:13 | 显示全部楼层
本帖最后由 飞雪神光 于 2024-2-29 16:24 编辑

这是一种写法 去掉不包含关键字的第四个元素 保留该表
  1. (defun del-lst-nth(num oldlist)
  2.   (setq num (1+ num))
  3.   (vl-remove-if'(lambda (x) (zerop (setq num (1- num))))oldlist)
  4. )
  5. (setq jzwsjnew
  6.   (mapcar
  7.     '(lambda (x)
  8.        (if
  9.          (and
  10.            (null (wcmatch (nth 3 x) "*隧洞进口"))
  11.            (null (wcmatch (nth 3 x) "*隧洞出口"))
  12.          )
  13.          (del-lst-nth 3 x)
  14.          x
  15.        )
  16.      )
  17.     jzwsj
  18.   )
  19. )

发表于 2024-2-29 16:22 | 显示全部楼层
这种写法是去掉不包含关键字的整个表
  1. (setq jzwsjnew (vl-remove-if-not '(lambda (x) (or (wcmatch (nth 3 x) "*隧洞进口")(wcmatch (nth 3 x) "*隧洞出口"))) jzwsj))
 楼主| 发表于 2024-2-29 16:28 | 显示全部楼层
飞雪神光 发表于 2024-2-29 16:22
这种写法是去掉不包含关键字的整个表

这种是我想要的,谢谢大神啊。您是啥行业啊,这么溜
发表于 2024-2-29 16:31 | 显示全部楼层
这个跟行业没关系 全靠写的多 写的越多就越溜
 楼主| 发表于 2024-2-29 16:34 | 显示全部楼层
飞雪神光 发表于 2024-2-29 16:31
这个跟行业没关系 全靠写的多 写的越多就越溜

小白一个,后面还得多请教
发表于 2024-2-29 19:45 | 显示全部楼层
(setq lst1 (vl-remove-if-not '(lambda (x)(or (vl-string-search "隧洞进口" (nth 3 x))(vl-string-search "隧洞进口" (nth 3 x))))lst))
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-12 22:46 , Processed in 0.221764 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表