我的我啊 发表于 2014-9-24 10:49:03

求助一个关于字符串表的问题

有一个表像这样'("****" "*****" "**H**" "*****" "***H**" "***")
希望得到这样-> '(("****" "*****" )("*****" ) ("***"))
也就是以H为关键字分割表。

Andyhon 发表于 2014-9-24 11:26:11

对映关系如何呢!?

ll_j 发表于 2014-9-24 11:33:36

(defun tt(lst str)
(setq l1 nil l2 nil)
(repeat (length lst)
    (setq l0(car lst)
          lst(cdr lst)
    )
    (if (wcmatch l0 (strcat "*" str "*"))
      (if l1
      (setq l2 (cons (reverse l1) l2)
            l1 nil
      )
      )
      (setq l1 (cons l0 l1))
    )
)
(if l1 (setq l2 (cons l1 l2)))
(reverse l2)
)
好久不写了,只能整点最简单的方法了。

我的我啊 发表于 2014-9-24 11:56:10

ll_j 发表于 2014-9-24 11:33 static/image/common/back.gif
好久不写了,只能整点最简单的方法了。

成了!好评!

自贡黄明儒 发表于 2014-9-25 16:34:15

我也整一下跟楼主要求差不多的;;(setq lst '("aaaa" "bbb" "aHjjj" "nHii" "nHii" "aaaa" "bbb" "aHjjj" "nHii" "cc" "bccb"))
;;=>(("aaaa" "bbb") ("aHjjj" "nHii" "nHii") ("aaaa" "bbb") ("aHjjj" "nHii") ("cc" "bccb"))
(defun w1 (LST / FLAG FLAG1 L L1 SCOR)
(while (and
           (setq L (car lst))
           (setq lst (cdr lst))
       )
    (cond ((vl-string-search "H" L) (setq Flag1 T))
          (T (setq Flag1 nil))
    )
    (cond ((not (equal Flag1 Flag)) (setq scor (cons (reverse L1) scor)) (setq L1 nil)))
    (setq L1 (cons L L1))
    (setq Flag Flag1)
)
(setq L1 (cons L L1))
(reverse (cons (reverse L1) scor))
)
页: [1]
查看完整版本: 求助一个关于字符串表的问题