明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2864|回复: 6

怎样让带有空格的字符串转换成表

[复制链接]
发表于 2012-4-25 20:40:24 | 显示全部楼层 |阅读模式
那位大侠帮帮忙
(setq str "50 35 80 40 50")
怎样让 变量 str 转换成下表
(50 50 35 80 40 50)表内数据全部为数字
 楼主| 发表于 2012-4-25 20:48:31 | 显示全部楼层
哈哈
自己突然找到答案了
(setq str "50 35 80 40 50")
(setq str (strcat "(" str ")"))
(setq lst (read str))
返回:(50 35 80 40 50)
发表于 2012-4-26 00:21:31 | 显示全部楼层
(setq str '(50 35 80 40 50))
发表于 2014-5-22 17:19:26 | 显示全部楼层
本帖最后由 fl202 于 2014-5-22 17:50 编辑

这个太强大了!
会用本论坛的搜索果然不一样。
这个小函数用处很大,用于list_box 中多选(ctrl or shift)删除的表中的几个项:


本来还想用下面的程序解决问题呢,楼主这个NB!!!:
  1. ;;85.1 [功能] 字符串分割
  2. ;;http://www.mjtd.com/function/info-129-216.html,有修改 黄明儒 2013年8月9日
  3. ;;(setq str   "100,,23456.876,345.456," delim ",")
  4. (defun parse1 (str delim / LST POS)
  5.   (while (setq pos (vl-string-search delim str))
  6.     (setq lst (cons (substr str 1 pos) lst)
  7.           str (substr str (+ pos 2))
  8.     )
  9.   )
  10.   (if (> (strlen str) 0)
  11.     (setq lst (cons str lst))
  12.   )
  13.   (reverse lst)
  14. )
附另一半程序:
  1. ;============{ 在指定位置删除或插入元素 }===============
  2. ;nil表示要删除。如果有值为要插入的元素---by wowan1314
  3. ;(t11 '(1 2 3 4 5 6) 2 0);;->(1 2 0 3 4 5 6)
  4. ;(t11 '(1 2 3 4 5 6) 2 nil);;->(1 2 4 5 6)
  5. ;2013年7月20日 星期六
  6. (defun t11 (lst pos mod / qlst a hlst)
  7.     (setq a -1)
  8.     (setq hlst (vl-member-if-not
  9.             '(lambda(x)
  10.                 (setq a (1+ a))
  11.                 (if (= a pos) nil
  12.                     (setq qlst (cons x qlst))
  13.                 )
  14.             )
  15.             lst
  16.         )
  17.     )
  18.     (if mod
  19.         (apply 'append (list (reverse(cons mod qlst)) hlst))
  20.         (apply 'append (list (reverse qlst) (cdr hlst))
  21.         )
  22.     )
  23. )
改进:
用于list_box 中多选(ctrl or shift)删除的表中的几个项
:list_box{label = "all:";key="d11";edit_width=10;alignment = right;multiple_select=true;}
  1. (defun tt2_sub1(vvs)
  2. (print vvs)
  3. (setq i 0 tb2 '() ab (read (strcat "(" vvs ")" )))
  4. (repeat (length tb1)
  5.   (if (member i ab)
  6.     (princ)
  7.     (setq tb2 (cons (nth i tb1) tb2))
  8.     )
  9.     (setq i (1+ i))
  10.     )
  11.   (setq tb2 (reverse tb2))
  12.   (show_list "d12" tb2)
  13. )
发表于 2014-5-22 18:13:36 | 显示全部楼层
试试这个: (setq str "50 35 文 80 本 40 50")
发表于 2014-9-1 10:39:46 | 显示全部楼层
这个可以有!谢谢了!
发表于 2015-7-22 15:52:23 | 显示全部楼层
read 看起来好简洁
比循环判断好看多了
好像只能用于空格  别的比如逗号什么的就不行了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-21 17:55 , Processed in 0.177054 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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