将输入的数据转换为字符串列表
将输入的数据转换为字符串列表,如:<BR>;Example: (string->list "Hello World") = ("Hello" "World")<BR><BR>(defun string->list (f_string / f_ls f_str f_len f_loop f_cur) ;converts string to a list using spaces as delimitation<BR> (setq f_ls nil<BR> f_str ""<BR> )<BR> (setq f_loop 0)<BR> (repeat (strlen f_string)<BR> (progn<BR> (setq f_loop (1+ f_loop))<BR> (setq f_cur (substr f_string f_loop 1))<BR> (if (= (ascii f_cur) 32)<BR> (if (/= f_str "")<BR> (progn<BR> (setq f_ls (append f_ls (list f_str)))<BR> (setq f_str "")<BR> )<BR> )<BR> (setq f_str (strcat f_str f_cur))<BR> )<BR> )<BR> )<BR> (if (/= f_str "")<BR> (setq f_ls (append f_ls (list f_str)))<BR> )<BR> f_ls<BR>) 非常支持,但好東西藏在這不容易發現,建議管理員另闢版塊,置頂不易達到效果回复
恩,说的有道理.回复
有好的程序吗?好的设计思想也可以分享啊?! 王咣生发表于2004-3-16 17:26:00static/image/common/back.gif回复:(王咣生)将输入的数据转换为字符串列表将输入的数据转换为字符串列表,如:;Example: (string->list \"Hello World\") = (\"Hello\" \"World\")(defun string->list (f_string /这也算精简?nonono;(str2lst str) 将输入的数据转换为字符串列表.-----------------------------梁雄啸.2004.3
;测试: (str2lst "Hello 2World 12 5456.1568") = ("Hello" "2World" "12" "5456.1568")
;版权所有,盗用必究!如在程序中引用,请保留文字信息行.
(defun str2lst (str / i)
(while (setq i (vl-string-search " " str (if i (+2 i) 0)))
(setq str (vl-string-subst "\"\"" " " str i))
)(read (strcat "(\"" str "\")"))
)
回复
谢谢!如果不用vlisp函数你会怎么做呢?
简单到不一定,要有思想?严谨的逻辑结构?
我想你要用AutoLISP自己设计程序结构来实现VLISP现成的函数功能,那将收获很多,
就好比用MFC封装好的类和自己设计一个类一样?
当然这不一定对每个人都必要. 本帖最后由 作者 于 2004-3-31 18:35:20 编辑
王咣生发表于2004-3-31 10:24:00static/image/common/back.gif回复:(王咣生)回复谢谢!如果不用vlisp函数你会怎么做呢?简单到不一定,要有思想?严谨的逻辑结构?我想你要用AutoLISP自己设计程序结构来实现VLISP现成的函数功能,那将收...;(str2lst str) 将输入的数据转换为字符串列表.---(纯autolspl的写法)--------------------------梁雄啸.2004.3
;测试: (str2lst "Hello 2World 12 5456.1568") = ("Hello" "2World" "12" "5456.1568")
;版权所有,盗用必究!如在程序中引用,请保留文字信息行.
(defun str2lst (str / i strlst str1)
(setq i 0 str1 "")
(while (/= "" (setq s (substr str (setq i (1+ i)) 1)))
(cond ((/= " " s) (setq str1 (strcat str1 s)))
(T (setq strlst (append strlst (list str1))
str1 "")))
)(if (/= str1 "") (append strlst (list str1)) strlst)
)
;方法2:(defun str2lst (str / i str1)
(setq i 0 str1 "")
(while (/= "" (setq s (substr str (setq i (1+ i)) 1)))
(setq str1 (strcat str1 (if (= " " s) "\" \"" s)))
)(read (strcat "(\"" str1 "\")"))
)