乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 141|回复: 9

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

[复制链接]

9

主题

39

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
75
发表于 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是什么意思啊。
回复

使用道具 举报

26

主题

3072

帖子

10

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3177
发表于 2004-2-19 09:01:00 | 显示全部楼层
1、为什么要改?按照其提示方式运行不就可以了吗?
2、这是程序内容部分,你现在连函数的使用都还不会,这个问题我想还是暂时先放一边吧
回复

使用道具 举报

9

主题

39

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
75
发表于 2004-2-20 10:51:00 | 显示全部楼层
输入(str2lst "23, 45, 1.023")可以运行的,改的目的是想让它成为CAD的新命令。
回复

使用道具 举报

26

主题

3072

帖子

10

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3177
发表于 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)))
)
回复

使用道具 举报

17

主题

32

帖子

8

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
99
发表于 2004-2-20 11:18:00 | 显示全部楼层
READ是个很奇怪的函数,最好别用,碰到好多情况都不正常,通用函数最好别用
举个例子:(read "meflying18.8 2.3 5.0")
本来应该是meflying18.8却出来meflying18了,:)
回复

使用道具 举报

26

主题

3072

帖子

10

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3177
发表于 2004-2-20 11:32:00 | 显示全部楼层
程序不是我写的,我只是按楼主的要求把输入改了一下,
其实从一个任意的字符串中读出需要的东西,还是一件很值得讨论的事,
回复

使用道具 举报

26

主题

3072

帖子

10

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3177
发表于 2004-2-20 13:23:00 | 显示全部楼层
这也有鸡蛋?莫名其妙
回复

使用道具 举报

20

主题

872

帖子

10

银币

中流砥柱

Rank: 25

铜币
952
发表于 2004-2-20 13:59:00 | 显示全部楼层
哈哈,你写程序辛苦了,给你补补身子
不是我送的哦:)
回复

使用道具 举报

16

主题

909

帖子

8

银币

中流砥柱

Rank: 25

铜币
973
发表于 2004-2-20 21:03:00 | 显示全部楼层
回5楼
如何有办法把meflying18.8变成实数?如果有,又如何把meflyin¥g1。8.8$$$变成实数?
完整的程序当然要加入测试实数的函数, 如realp什么的。
回复

使用道具 举报

20

主题

872

帖子

10

银币

中流砥柱

Rank: 25

铜币
952
发表于 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
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-8 21:37 , Processed in 1.202268 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表