明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3506|回复: 14

[基础] 列表转字符串

  [复制链接]
发表于 2009-11-2 16:54 | 显示全部楼层 |阅读模式

如有列表

(“000-PL01.DWG”“000-PL02.DWG” “000-PL03.DWG”  )

如何让他实现

(“000-PL01.DWG,000-PL02.DWG,000-PL03.DWG”)

用APPLY 'STRCAT的话

只能(“000-PL01.DWG000-PL02.DWG000-PL03.DWG”)

也就是说如何添加","分割开

发表于 2009-11-2 17:57 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 发表于 2009-11-2 22:13 | 显示全部楼层
还有其他方法吗
发表于 2009-11-2 22:46 | 显示全部楼层

我的函数库中的

;;用分隔符解释字符串成表
(defun Fsxm-Split (string strkey / po strlst xlen)
  (setq xlen (1+ (strlen strkey)))
  (while (setq po (vl-string-search strkey string))
    (setq strlst (cons (substr string 1 po) strlst))
    (setq string (substr string (+ po xlen)))
  )
  (reverse (cons string strlst))
)
;;连结表中字符串
(defun Fsxm-join (lst str)
  (substr (apply 'strcat (mapcar '(lambda (a) (strcat str a)) lst))
   (1+ (strlen str))
  )
)

 楼主| 发表于 2009-11-3 14:47 | 显示全部楼层
好像用不了啊!
发表于 2009-11-3 15:42 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2009-11-3 17:30 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2009-11-3 23:46 | 显示全部楼层

楼上的程序很好,最精简,不过还有一点小问题:末尾多了一个“,”,其执行结果为:"000-PL01.DWG,000-PL02.DWG,000-PL03.DWG,"

我完善了一下:

(defun tt (lst str / tmp)
  (if lst
    (setq tmp (car lst)
   lst (cdr lst)
   lst (apply 'strcat (mapcar '(lambda (a) (strcat str a)) lst))
   tmp (strcat tmp lst)
    )
    nil ;lst为空,则返回nil。当然也可根据需要返回其它值。
  )
)


(tt '("000-PL01.DWG" "000-PL02.DWG" "000-PL03.DWG") ",")

发表于 2009-11-4 00:08 | 显示全部楼层

我的程序都发在前面了,还想来个比我的更精练的哈~?

当然以前我还这样写过:

(strcat (car lst) (apply 'strcat (mapcar '(lambda (a) (strcat str a)) (cdr lst)))

都是很精练的。

发表于 2009-11-4 00:44 | 显示全部楼层
本帖最后由 作者 于 2009-11-4 1:32:42 编辑

小改一下

(defun tt(lst str)
  (substr (apply 'strcat (mapcar '(lambda (a) (strcat str a)) lst)) 2)
)

还有更短的么?有

(defun tt (lst str)
   (setq a (car lst) b (cdr lst))(if b (strcat a "," (tt b str)) a)
)

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-20 20:06 , Processed in 0.267011 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表