明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2453|回复: 10

[求助]再问关于字符串转换多个实数问题

[复制链接]
发表于 2004-2-19 08:49:00 | 显示全部楼层 |阅读模式
在关于对话框字符串转换问题中提到过这个问题,BDYCAD给出了单个字符串的转换,alin给了我一个函数: 发贴心情
用下面的函数把字串转成实数表 ;;;_$ (str2lst "23, 45, 1.023")
;;;(23 45 1.023) (defun str2lst(str / lst pos)
(setq lst '())
(while (setq pos (vl-string-position 44 str))
(setq lst (append lst (list (read (substr str 1 pos)))))
(setq str (substr str (+ pos 2)))
)
(append lst (list (read str)))
) 可是我不会用啊!!! 将(defun str2lst(str / lst pos)改为(defun c:str2lst(str / lst pos)运行后提示参数太少, 还有(vl-string-position 44 str)中44是什么意思啊。
发表于 2004-2-19 09:01:00 | 显示全部楼层
1、为什么要改?按照其提示方式运行不就可以了吗?


2、这是程序内容部分,你现在连函数的使用都还不会,这个问题我想还是暂时先放一边吧
 楼主| 发表于 2004-2-20 10:51:00 | 显示全部楼层
输入(str2lst "23, 45, 1.023")可以运行的,改的目的是想让它成为CAD的新命令。
发表于 2004-2-20 10:53:00 | 显示全部楼层
(defun c:str2lst(/ str lst pos) (setq str (getstring "输入字符串:"))
(setq lst '())
(while (setq pos (vl-string-position 44 str))
(setq lst (append lst (list (read (substr str 1 pos)))))
(setq str (substr str (+ pos 2)))
)
(append lst (list (read str)))
)
发表于 2004-2-20 11:18:00 | 显示全部楼层
READ是个很奇怪的函数,最好别用,碰到好多情况都不正常,通用函数最好别用


举个例子:(read "meflying18.8 2.3 5.0")


本来应该是meflying18.8却出来meflying18了,:)
发表于 2004-2-20 11:32:00 | 显示全部楼层
程序不是我写的,我只是按楼主的要求把输入改了一下,


其实从一个任意的字符串中读出需要的东西,还是一件很值得讨论的事,
发表于 2004-2-20 13:23:00 | 显示全部楼层
这也有鸡蛋?莫名其妙
发表于 2004-2-20 13:59:00 | 显示全部楼层
哈哈,你写程序辛苦了,给你补补身子


不是我送的哦:)
发表于 2004-2-20 21:03:00 | 显示全部楼层
回5楼


如何有办法把meflying18.8变成实数?如果有,又如何把meflyin¥g1。8.8$$$变成实数?


完整的程序当然要加入测试实数的函数, 如realp什么的。
发表于 2004-2-20 22:31:00 | 显示全部楼层
;|斜门!以前还真没发现
_$ (wcmatch (substr "¥。" 1 1) "#,.")
T
_$ (wcmatch (substr "。" 1 1) "#,.")
T
|;只好改改
  1. (setq str "meflyin18.8¥g18。18.5$8.8$$$1。8" nstr "" i 1);"meflying18.8"
  2. (repeat (strlen str)
  3.    (if (or (wcmatch (setq st (substr str (setq i (1+ i)) 1)) "#")(= st "."))
  4.        (setq nstr (strcat nstr st))
  5.        (if (and (/= "" nstr)(/= " " (substr nstr (strlen nstr))))(setq nstr (strcat nstr " ")))
  6.    )
  7. )
  8. (read (strcat "(" nstr")")) ;->(18.8 18 18.5 8.8 1 8)
  9. (read nstr);->18.8
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-27 16:29 , Processed in 0.173400 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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