dakui 发表于 2018-10-18 22:05:44

字符串转表最终得到其中的值

本帖最后由 dakui 于 2018-10-19 05:20 编辑

我还是个菜鸟,有很多不懂得地方望明经友人指点一下。
从网上收集的代码拼凑了一段。
(defun C:test()
      (setq UserWord"(好)ABCDEF:kmt")
      (princ "\n")
      (princ UserWord)
      (setq UserWord (parse4 UserWord "():"))
      (princ "\n")
       (princ UserWord)
      (setq UserWord (getlst_n->m UserWord 3 3))
      (princ "\n")
       (princ UserWord)
      (setq UserWord (car UserWord))    ;追加了这段代码,就搞定了。
      (princ "\n")
       (princ UserWord)
(princ)
)
执行后得到结果是
(好)ABCDEF:kmt
(好 ABCDEF kmt)
(kmt)
kmt
最终目的想得到(kmt)值 kmt
该如何实现?
自己把问题解决了;P,谢谢朋友们的帮助。

;;;;字符串分割
;;;;(parse4 "符号25 35 45 ; 55, 66 "" ;")=> ("25" "35" "45" "55," "66")
;;;;(parse4 "aa ,10 b.10x20,.2"       ",.")=> ("aa " "10 b" "10x20" "2")
(defun parse4 (str delim / L1 L2)
   (setq      str   (vl-string->list str)
         delim (vl-string->list delim)
   )
   (while str
   (if      (not (member (car str) delim))
       (setq l1 (cons (car str) l1))
       (if l1
         (setq l2 (cons (vl-list->string (reverse l1)) l2)
               l1 nil
         )
       )
   )
   (setq str (cdr str))
   )
   (if l1
   (setq l2 (cons (vl-list->string (reverse l1)) l2))
   )
   (reverse l2)
)

;;;;(setq a '(1 2 3 4 5 6 7 8 9))
;;;;提取表n至m項元素
;;;;用法:(getlst_n->m a 3 6)
;;;;返回:表
;;;;例:(getlst_n->m a 3 6) 返回(3 4 5 6)
(defun getlst_n->m (lst n m / new_lst)
(repeat (1+ (- m n))
(setq new_lst (cons (nth (1- n) lst) new_lst))
(setq n (1+ n))
)
(reverse new_lst)
)

dakui 发表于 2018-10-18 22:34:34

在线等。。。。。。

masterlong 发表于 2018-10-18 22:57:47

substr提取字符串
页: [1]
查看完整版本: 字符串转表最终得到其中的值