洪少(刀模) 发表于 2012-9-10 15:51:33

字符串处理

G0X-35.Y-25.怎样使它变成(-35 -25 0)?

Andyhon 发表于 2012-9-10 16:39:25

(atoi (substr "G0X-35.Y-25." 4 3))
==> -35

建议楼主贴足可供分析的 例句 ...

yjr111 发表于 2012-9-10 16:49:29

1、(vl-string-search “-” )
2、(vl-string-search “.” )
3、取中间字符即可

sjj 发表于 2012-9-10 16:56:50

G0X-35.Y-25.变成(-35 -25 0)
-35,-25应该是X.Y.后的数值,0是G后面的数值吗?

夏生生 发表于 2012-9-10 17:03:04

(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)
        )
)

洪少(刀模) 发表于 2012-9-10 17:11:57

其实G0X-35.Y-25.是一句NC文件的格式,我现在想的是用LISP读取并转换成CAD的点。
谢谢各位的回复,我试试夏生生的代码

洪少(刀模) 发表于 2012-9-10 17:18:21

夏生生的代码调试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:48:39

本帖最后由 夏生生 于 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]
查看完整版本: 字符串处理