logitechlike 发表于 2011-12-28 16:31:23

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

本帖最后由 logitechlike 于 2011-12-29 09:51 编辑

(vl-princ-to-stringdata)
(read )

如果数据是数字的列表互转比较方便没有问题
如:(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-285楼------------------------------------------------------------
;;;例子没举好
;;;(setq TempStr (vl-princ-to-string (list "abc" "Abc" "ABC")))
(setq TempStr"(abc Abc ABC)")
;;;中间如何处理???
;;;如果是二级list 个数不确定更复杂
(read TempStr)   ;;;期望结果(list "abc" "Abc" "ABC")

Andyhon 发表于 2011-12-28 16:51:29

此路不通得另寻他道
请楼主以实例说说...

logitechlike 发表于 2011-12-28 17:00:58

如果自己知道字符串列表的固定长度, 格式;
可以用vl-string-search判断空格处理,自己写解析函数

我希望有个通用的,要不每种都得对应

byghbcx 发表于 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")

logitechlike 发表于 2011-12-28 18:20:43

byghbcx 发表于 2011-12-28 17:38 static/image/common/back.gif
转为字符串(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")

xshrimp 发表于 2011-12-28 21:45:28

本帖最后由 xshrimp 于 2011-12-28 21:45 编辑

楼上已经解答了啊
(setq TempStr (vl-prin1-to-string (list "abc" "Abc" "ABC")))

logitechlike 发表于 2011-12-29 09:48:55

xshrimp 发表于 2011-12-28 21:45 static/image/common/back.gif
楼上已经解答了啊
(setq TempStr (vl-prin1-to-string (list "abc" "Abc" "ABC")))

;;;例子没举好
(setq TempStr"(abc Abc ABC)")
;;;中间如何处理???
;;;如果是二级list 个数不确定更复杂
(read TempStr)   ;;;期望结果(list "abc" "Abc" "ABC")

byghbcx 发表于 2011-12-29 14:08:59

logitechlike 发表于 2011-12-29 09:48 static/image/common/back.gif
;;;例子没举好
(setq TempStr"(abc Abc ABC)")
;;;中间如何处理???


看不出abc是作为变量还是作为“abc”字符串

Andyhon 发表于 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)
)
页: [1] 2
查看完整版本: 求助:str 字符串 list 互转的问题