字符串处理
G0X-35.Y-25.怎样使它变成(-35 -25 0)? (atoi (substr "G0X-35.Y-25." 4 3))==> -35
建议楼主贴足可供分析的 例句 ... 1、(vl-string-search “-” )
2、(vl-string-search “.” )
3、取中间字符即可 G0X-35.Y-25.变成(-35 -25 0)
-35,-25应该是X.Y.后的数值,0是G后面的数值吗? (defun string_in (str1 str2 str /)
(setq m (vl-string-search str1 str))
(setq n (vl-string-search str2 str))
(substr str (+ 2 m) (- n m 1))
)
(setq str "G0X-35.Y-25.")
(mapcar 'atoi
(list (string_in "X" "." str)
(string_in "Y"
"."
(substr str (+ 2 (vl-string-search "." str)))
)
(string_in "G" "X" str)
)
) 其实G0X-35.Y-25.是一句NC文件的格式,我现在想的是用LISP读取并转换成CAD的点。
谢谢各位的回复,我试试夏生生的代码 夏生生的代码调试OK
可否固定模式为(xx yy 0)
当G0X-35.Y-25.>>>>>(-35 25 0)
当G0X-35.>>>>>(-35 0 0)
当G0XY-25.>>>>>(0 25 0)
夏生生
本帖最后由 夏生生 于 2012-9-10 18:50 编辑
洪少(刀模) 发表于 2012-9-10 17:18 http://bbs.mjtd.com/static/image/common/back.gif
夏生生的代码调试OK
可否固定模式为(xx yy 0)
当G0X-35.Y-25.>>>>>(-35 25 0)
(defun string_in (str1 str2 str / m n)
(setq m (vl-string-search str1 str))
(setq n (vl-string-search str2 str))
(substr str (+ 2 m) (- n m 1))
)
(defun u_str (str / )
(cond
((and (vl-string-search "X" str)
(vl-string-search "Y" str)
(/= "" (string_in "X" "Y" str))
)
(mapcar
'atoi
(list (string_in "X" "." str)
(string_in "Y"
"."
(substr str (+ 2 (vl-string-search "." str)))
)
(string_in "G" "X" str)
)
)
)
((and (vl-string-search "X" str)
(vl-string-search "Y" str)
(= "" (string_in "X" "Y" str))
)
(mapcar
'atoi
(list "0"
(string_in "Y" "." str)
(string_in "G" "X" str)
)
)
)
((= nil
(vl-string-search "Y" str)
)
(mapcar
'atoi
(list (string_in "X" "." str)
"0"
(string_in "G" "X" str)
)
)
)
)
)
(u_str "G0X-35.Y-25.")
(u_str "G0X-35.")
(u_str "G0XY-25.")
页:
[1]