明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 518|回复: 5

[提问] 依条件取得字符串问题

[复制链接]
发表于 2019-6-29 08:23 | 显示全部楼层 |阅读模式
本帖最后由 尘缘一生 于 2019-6-29 09:02 编辑

有如下格式字符串

"C:\\Program Files\\Autodesk\\AutoCAD 2020\\support;C:\\Program Files\\Autodesk\\AutoCAD 2020\\support\\zh-CN;C:\\Program Files\\Autodesk\\AutoCAD 2020\\Express;C:\\Program Files\\Autodesk\\AutoCAD 2020\\support\\color;D:\\LX\\三领外挂;"


  如何编写个LISP,判断里面有“三领外挂”4个字的话,就取得:它所在部分的字符(蓝色部分,前后两分号之间)?



    实质就是:有了搜索路径了,如何依据条件,提取这一个特定路径出来。
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2019-6-29 14:45 | 显示全部楼层
本帖最后由 highflybird 于 2019-6-29 14:55 编辑
highflybird 发表于 2019-6-29 14:28
用这个获取到支持路径到列表,然后就好办了,用wcmatch 就可以得到你想要的。

  1. (defun c:test (/ str lst)  (setq str (getvar "ACADPREFIX")) ;TRUSTEDPATHS ¶
  2.   (setq lst (GetSupportPath str))
  3.   (foreach n lst
  4.     (if (wcmatch n "*三领外挂*")
  5.       (princ (strcat "\n" n))
  6.     )
  7.   )
  8.   (princ)
  9. )
回复 支持 1 反对 0

使用道具 举报

发表于 2019-6-29 14:28 | 显示全部楼层
  1. (defun GetSupportPath (str / i j lst)
  2.   (setq i 0)
  3.   (while (setq i (vl-string-position 58 str i))
  4.     (setq j (vl-string-position 58 str (1+ i)))
  5.     (if j
  6.       (setq lst (cons (substr str i (- j i)) lst))
  7.       (setq lst (cons (substr str i) lst))
  8.     )
  9.     (setq i (1+ i))
  10.   )
  11.   (reverse lst)
  12. )

用这个获取到支持路径到列表,然后就好办了,用wcmatch 就可以得到你想要的。

点评

感谢高飞鸟大师,我一直在苦思冥想,,,,,,,  发表于 2019-6-29 19:30
发表于 2019-9-6 16:48 | 显示全部楼层
就是想要这个功能,厉害厉害,好好研究下
发表于 2019-9-6 16:54 | 显示全部楼层
本帖最后由 被承包的东子 于 2019-9-6 17:44 编辑
highflybird 发表于 2019-6-29 14:28
用这个获取到支持路径到列表,然后就好办了,用wcmatch 就可以得到你想要的。
是我想错了 不好意思
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-16 16:33 , Processed in 0.160337 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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