本帖最后由 llsheng_73 于 2015-11-26 23:28 编辑
琴剑江山_10184 发表于 2015-11-23 11:50 
不知道是不是要这样的效果
 - (defun strsplit(str splits / i a l) (while(<""str)
- (if(vl-remove'nil(mapcar'(lambda(x)(vl-string-search x str))splits))
- (setq i(car(vl-sort(vl-remove'nil(mapcar'(lambda(x)(if(setq l(vl-string-search x str))(cons l x)))splits))
- '(lambda(s1 s2)(<(car s1)(car s2)))))
- a(cons(substr str 1(car i))a)
- str(substr str(+(car i)(strlen(cdr i))1)))
- (setq a(cons str a)str"")))
- (reverse a))
- (defun tt(str)(apply'append(mapcar'(lambda(x / a b c)
- (setq a(STRSPLIT x'("*"))c(if(cadr a)(atoi(cadr a)))a(car a)b nil)
- (if(> c 0)(repeat c(setq b(cons a b)))(list a)))
- (STRSPLIT str'("+")))))
- (defun c:tt(/ str)(if(>(setq str(getstring"\n测试:"))"")(tt str)))
(tt"A+B*2+C+D*E+F*3")==>("A" "B" "B" "C" "D" "F" "F" "F")
|