尘缘一生 发表于 2019-6-29 08:23:56

依条件取得字符串问题

本帖最后由 尘缘一生 于 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个字的话,就取得:它所在部分的字符(蓝色部分,前后两分号之间)?


    实质就是:有了搜索路径了,如何依据条件,提取这一个特定路径出来。

highflybird 发表于 2019-6-29 14:45:35

本帖最后由 highflybird 于 2019-6-29 14:55 编辑

highflybird 发表于 2019-6-29 14:28
用这个获取到支持路径到列表,然后就好办了,用wcmatch 就可以得到你想要的。
(defun c:test (/ str lst)(setq str (getvar "ACADPREFIX")) ;TRUSTEDPATHS ¶
(setq lst (GetSupportPath str))
(foreach n lst
    (if (wcmatch n "*三领外挂*")
      (princ (strcat "\n" n))
    )
)
(princ)
)

highflybird 发表于 2019-6-29 14:28:40


(defun GetSupportPath (str / i j lst)
(setq i 0)
(while (setq i (vl-string-position 58 str i))
    (setq j (vl-string-position 58 str (1+ i)))
    (if j
      (setq lst (cons (substr str i (- j i)) lst))
      (setq lst (cons (substr str i) lst))
    )
    (setq i (1+ i))
)
(reverse lst)
)
用这个获取到支持路径到列表,然后就好办了,用wcmatch 就可以得到你想要的。

被承包的东子 发表于 2019-9-6 16:48:36

就是想要这个功能,厉害厉害,好好研究下

被承包的东子 发表于 2019-9-6 16:54:39

本帖最后由 被承包的东子 于 2019-9-6 17:44 编辑

highflybird 发表于 2019-6-29 14:28
用这个获取到支持路径到列表,然后就好办了,用wcmatch 就可以得到你想要的。是我想错了 不好意思
页: [1]
查看完整版本: 依条件取得字符串问题