明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4282|回复: 11

求助:str 字符串 list 互转的问题

[复制链接]
发表于 2011-12-28 16:31:23 | 显示全部楼层 |阅读模式
本帖最后由 logitechlike 于 2011-12-29 09:51 编辑

(vl-princ-to-string  data)
(read [string])

如果数据是数字的列表互转比较方便没有问题
如:(list 10 20 30)
转为字符串(vl-princ-to-string (list 10 20 30))   返回"(10 20 30)"
再转为列表(read (vl-princ-to-string (list 10 20 30)))   返回(10 20 30)


但是如果是字符串的列表互转有大小写的问题
如:(list "abc" "Abc" "ABC")
转为字符串(vl-princ-to-string (list "abc" "Abc" "ABC"))   返回"(abc Abc ABC)"
再转为列表(read (vl-princ-to-string (list "abc" "Abc" "ABC")))   返回(ABC ABC ABC)  大问题,都变大写了!

有对应办法吗?请各位高手帮忙

-----------------------------------------------2011-12-28  5楼------------------------------------------------------------
;;;例子没举好
;;;(setq TempStr (vl-princ-to-string (list "abc" "Abc" "ABC")))
(setq TempStr  "(abc Abc ABC)")
;;;中间如何处理???
;;;如果是二级list 个数不确定更复杂
(read TempStr)   ;;;期望结果(list "abc" "Abc" "ABC")

发表于 2011-12-28 16:51:29 | 显示全部楼层
此路不通得另寻他道
请楼主以实例说说...
 楼主| 发表于 2011-12-28 17:00:58 | 显示全部楼层
如果自己知道字符串列表的固定长度, 格式;
可以用vl-string-search判断空格处理,自己写解析函数

我希望有个通用的,要不每种都得对应
发表于 2011-12-28 17:38:19 | 显示全部楼层
转为字符串(vl-princ-to-string (list "abc" "Abc" "ABC"))   返回"(abc Abc ABC)"
(read "(abc Abc ABC)")后abc Abc ABC都分别作为变量列入新表(ABC ABC ABC)
要连字符引号一齐转,read才能转成含字符串的表
列表(read (vl-prin1-to-string (list "abc" "Abc" "ABC")))返回("abc" "Abc" "ABC")
 楼主| 发表于 2011-12-28 18:20:43 | 显示全部楼层
byghbcx 发表于 2011-12-28 17:38
转为字符串(vl-princ-to-string (list "abc" "Abc" "ABC"))   返回"(abc Abc ABC)"
(read "(abc Abc ABC)" ...

多谢!
vl-prin1-to-string 和 read是这种

;;;例子没举好
(setq TempStr (vl-princ-to-string (list "abc" "Abc" "ABC")))
;;;中间如何处理???
;;;如果是二级list 个数不确定更复杂
(read TempStr)   ;;;期望结果(list "abc" "Abc" "ABC")
发表于 2011-12-28 21:45:28 | 显示全部楼层
本帖最后由 xshrimp 于 2011-12-28 21:45 编辑

楼上已经解答了啊
(setq TempStr (vl-prin1-to-string (list "abc" "Abc" "ABC")))
 楼主| 发表于 2011-12-29 09:48:55 | 显示全部楼层
xshrimp 发表于 2011-12-28 21:45
楼上已经解答了啊
(setq TempStr (vl-prin1-to-string (list "abc" "Abc" "ABC")))

;;;例子没举好
(setq TempStr  "(abc Abc ABC)")
;;;中间如何处理???
;;;如果是二级list 个数不确定更复杂
(read TempStr)   ;;;期望结果(list "abc" "Abc" "ABC")
发表于 2011-12-29 14:08:59 | 显示全部楼层
logitechlike 发表于 2011-12-29 09:48
;;;例子没举好
(setq TempStr  "(abc Abc ABC)")
;;;中间如何处理???

看不出abc是作为变量还是作为“abc”字符串
发表于 2011-12-29 14:59:11 | 显示全部楼层
...如果是二级list 个数不确定更复杂...

建议楼主 就实例多举多些样本,
何者是原素材,所欲转换得出的成果,条列以供调试比对
发表于 2012-11-14 17:28:02 | 显示全部楼层
(defun c:cd()
     (setq aa (vl-prin1-to-string (list "abc" "Abc" "ABC")))
     (print aa) ;返回"(\"abc\" \"Abc\" \"ABC\")"
     (setq aa (read (vl-princ-to-string aa)))
     (print aa)  ;返回("abc" "Abc" "ABC")
     
     (setq bb (vl-princ-to-string (list "abc" "Abc" "ABC")))
     (print bb) ;返回"(abc Abc ABC)"
     (setq bb (read (vl-princ-to-string bb)))
     (print bb) ;返回(ABC ABC ABC)
     (princ)
  )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-23 10:18 , Processed in 0.188387 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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