字符串转表最终得到其中的值
本帖最后由 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)
)
在线等。。。。。。 substr提取字符串
页:
[1]