找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 995|回复: 12

[求助] [求助]:如何把字符串转化为数字串

[复制链接]
发表于 2004-4-22 16:44:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
比如:把字符串"1500 2000 3000 "如何转化为数字串(也就是表)(1500 2000 3000)
用lisp如何实现
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 6530个

财富等级: 富甲天下

发表于 2004-4-22 17:09:01 | 显示全部楼层
(setq zfc "1500 2000 3000") ;文件中读出的么
(setq numl (read (strcat "(" zfc ")")))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

发表于 2004-4-22 22:02:00 | 显示全部楼层
呵呵。。。。。。。。
我的轴线绘制中就使用了这个函数!
http://www.xdcad.net/forum/showthread.php?s=&threadid=166187
你有兴趣可以下载来看看。最好用VLISP跟踪分析一下!

  1. ;;-----------------
  2.   ;;字符串表转换至数字表函数
  3.   (DEFUN Do_resolve (l / l1 n i x s)
  4.     (FOREACH x (REVERSE l)
  5. ;;;      (IF (/=
  6.       (SETQ s (ATOF x))
  7. ;;;      0.0)
  8. ;;;        (progn
  9.       (IF (SETQ N (VL-STRING-POSITION (ASCII "*") x))
  10.         (SETQ I (ATOI (SUBSTR x (+ 2 n))))
  11.         (SETQ I 1)
  12.       ) ;_ 结束if
  13.       (REPEAT i (SETQ l1 (CONS S l1)))
  14. ;;;      )
  15. ;;;      ) ;_ 结束if
  16.     ) ;_ 结束foreach
  17.     l1
  18.   ) ;_ 结束defun
  19.   ;;-------------------------

调用形式:

  1. (setq test(list "2500*1" 3000*2" "4500*1" ""))
  2. (setq l(Do_resolve  test))
  3. ;;l=(2500 3000 3000 4500 0.0)

注:由于是为了轴线绘制而编制的,所以每一组字符串都要表示为间距乖以个数的形式。且为了编程的方便,在字符串列表的最后要加一个空串,然后生成的数字表最后为0.0,应在使用中删除。
--------------------
其实只要你分析过上面的程序就可以修改它的,你可以让个数在前面,而间距在后面,或直接就不要个数了!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-4-23 14:44:26 | 显示全部楼层
黄金长老:
请问:
如何把 1500*3  转化为字符串 "1500*3"
谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

发表于 2004-4-23 15:15:11 | 显示全部楼层
不可能吧
一个数里面怎么可能有*号呢
你说的是(1500 1500 1500)转化吧
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2004-4-23 15:16:11 | 显示全部楼层
最初由 wzg 发布
[B]黄金长老:
请问:
如何把 1500*3  转化为字符串 "1500*3"
谢谢 [/B]


你这个 1500*3  是怎么得来的,或者从哪里得来的?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-4-23 15:39:12 | 显示全部楼层
是这样的:
比如:我在edit_box控件中输入2000 1500*3 3000,得到字符串“2000 1500*3 3000”,按照黄金长老的方法得到数字串(2000 1500*3 3000),我想按netbee兄的方法得到(2000 1500
1500 1500 3000),但是netbee要求的格式为(“2000” “1500*3”  “3000”),2000和3000容易转化,但是1500*3如何转为"1500*3"?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

发表于 2004-4-23 16:15:26 | 显示全部楼层
呵呵。。。。。。。。。。
我知道了
你是讲从文本框中得到的是一个字符串
如:"2500 3000*3 1500"
你想转换为字符串列表:("2500*1" "3000*3" "1500*1")
然后使用我上面的函数
最后生成数字串列表:(2500 3000 3000 3000 1500)

是吧。
这一步的函数在我的轴线绘制中
http://www.xdcad.net/forum/showthread.php?s=&threadid=166187
你用VLISP加载跟踪看看吧!

  1. ;;键入文本框定义函数
  2.   (defun Do_EnterData

你在这个Do_EnterData 函数内部第一行下中断跟踪就行了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-4-23 17:13:37 | 显示全部楼层
netbee兄:
(substrnumber)   (strparse)是什么函数,我在书上找不到它
谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

发表于 2004-4-23 20:01:46 | 显示全部楼层
这是自定义函数
它并不是我编制的
呵呵。。。。。。。。
是[明经通道]上的

  1. ;;;==================================================================
  2. ;;; (StrParse Str Delimiter)
  3. ;;;                将具有分隔符的字符串解析为列表
  4. ;;;------------------------------------------------------------------
  5. ;;; 参数:
  6. ;;;                Str                        要解析的字符串
  7. ;;;                Delimiter        要搜索的分隔符
  8. ;;;------------------------------------------------------------------
  9. ;;;        返回:
  10. ;;;                一个字符串列表。
  11. ;;;                示例:
  12. ;;;                (setq a "Harp,Guiness,Black and Tan")
  13. ;;;                (StrParse a ",")
  14. ;;;                返回:
  15. ;;;                ("Harp" "Guiness" "Black and Tan")
  16. ;;;------------------------------------------------------------------
  17. ;;; 相关主题: (StringToList)
  18. ;;;------------------------------------------------------------------
  19. (defun strParse        (Str Delimiter / SearchStr StringLen return n char)
  20.   (setq SearchStr Str)
  21.   (setq StringLen (strlen SearchStr))
  22.   (setq return '())


  23.   (while (> StringLen 0)
  24.     (setq n 1)
  25.     (setq char (substr SearchStr 1 1))
  26.     (while (and (/= char Delimiter) (/= char ""))
  27.       (setq n (1+ n))
  28.       (setq char (substr SearchStr n 1))
  29.     ) ;_ end of while
  30.     (setq return (cons (substr SearchStr 1 (1- n)) return))
  31.     (setq SearchStr (substr SearchStr (1+ n) StringLen))
  32.     (setq StringLen (strlen SearchStr))
  33.   ) ;_ end of while
  34.   (reverse return)
  35. ) ;_ end of defun
  36. ;;;==================================================================
  37. ;;; (StrUnParse Lst Delimiter)
  38. ;;;                将一个字符串列表解析为1个具有分隔符的字符串
  39. ;;;------------------------------------------------------------------
  40. ;;; 参数:
  41. ;;;                Str                        要连接的列表
  42. ;;;                Delimiter        使用的分隔符
  43. ;;;------------------------------------------------------------------
  44. ;;;        返回:
  45. ;;;                一个字符串。
  46. ;;;                示例:
  47. ;;;                (setq a '("Harp" "Guiness" "Black and Tan"))
  48. ;;;                (StrUnParse a ",")
  49. ;;;                返回:
  50. ;;;                "Harp,Guiness,Black and Tan"
  51. ;;;------------------------------------------------------------------
  52. (defun StrUnParse (Lst Delimiter / return)
  53.   (setq return "")
  54.   (foreach str Lst
  55.     (setq return (strcat return Delimiter str))
  56.   ) ;_ end of foreach
  57.   (substr return 2)
  58. ) ;_ end of defun

  59. ;;;------------------------------------
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-4-24 11:58:37 | 显示全部楼层
感谢netbee兄的热心教诲,希望以后能得到你的更多帮助
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 8个

财富等级: 恭喜发财

发表于 2004-4-24 13:01:47 | 显示全部楼层
vl-prin1-to-string
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-4-24 15:32:24 | 显示全部楼层
netbee兄:
(substrnumber) 是什么函数,请继续
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-27 03:39 , Processed in 0.199272 second(s), 56 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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