找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2318|回复: 22

[讨论]:我想写一个函数,获得一个带数字字符串的组成,大家帮我下,看看怎么能达到要

[复制链接]

已领礼包: 40个

财富等级: 招财进宝

发表于 2002-10-9 00:14:07 | 显示全部楼层 |阅读模式

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

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

×
比如字符串:

“abc12de34f5"

希望处理后得到这样的表:

("abc" "12" "de" 34" "f" "5"),即字符和数字分开组成表。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2002-10-9 02:14:13 | 显示全部楼层
你要求的数字是否只包括0-9?还有没有其它符号(如正负号等)?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-10-9 02:30:58 | 显示全部楼层
最初由 Qlin 发布
[B]你要求的数字是否只包括0-9?还有没有其它符号(如正负号等)? [/B]


我想,通用得函数应该考虑全面,应该考虑有汉字、字母、数字、+-号,小数点(0.12、.12、12.、12.0)等等这样的任意组合的汉字给拆分成表。

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

使用道具 举报

发表于 2002-10-9 09:18:09 | 显示全部楼层
你的要求可以实现,请把你的要求讲得更详细更具体一些,我的email:lijiao@censtar.com
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

 楼主| 发表于 2002-10-9 10:41:49 | 显示全部楼层
最初由 lijiao 发布
[B]你的要求可以实现,请把你的要求讲得更详细更具体一些,我的email:lijiao@censtar.com [/B]


谢谢这么多热心的朋友,我的想法加上上面两个朋友的补充,基本完整了,就是希望把任意的字符串把数字给提出来。其他的按照字符的顺序,在表中依次排列。

比如:“建筑-.12ab34"--》(”建筑“ ”-0.12" "ab" "34")这样的。

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

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2002-10-9 11:18:59 | 显示全部楼层
有一个字母是需要判断的:E,是科学计数标记,如2e3。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-10-11 01:52:44 | 显示全部楼层
我大概写了个函数,看看是否达到要求:

例如:
_$ (mixstring->list "中文使用-.123abc-0.45fff")
输出:
("中文使用" "-.123" "abc" "-0.45" "fff")


  1. [FONT=courier new]

  2. (defun mixstring->list (str_in / lst_out n len1 lst_n
  3.                       chr_c chr_n chr_p
  4.                       str_c str_id
  5.                       num_add str_add)
  6.   (defun num_add ()
  7.     (if str_id
  8.       (progn
  9.         (if (/= str_c "")(setq lst_out (cons str_c lst_out)))
  10.         (setq  str_c chr_c
  11.               str_id nil
  12.         );setq
  13.       )
  14.       (setq str_c (strcat str_c chr_c))
  15.     );if
  16.   )

  17.   (defun str_add ()
  18.     (if str_id
  19.       (setq str_c (strcat str_c chr_c))
  20.       (progn
  21.         (if (/= str_c "")(setq lst_out (cons str_c lst_out)))
  22.         (setq  str_c chr_c
  23.               str_id T
  24.         );setq
  25.       )
  26.     );if
  27.   )
  28.   
  29.   ;C-1: 加入对输入值的判断
  30.   (if (and str_in (/= str_in ""))
  31.     (setq len1 (strlen str_in))
  32.     (setq len1 0)
  33.   )
  34.   
  35.   (setq n 1
  36.         lst_n (list "0" "1" "2" "3" "4" "5" "6" "7" "8" "9")
  37.         str_c "")

  38.   (repeat len1
  39.     (setq chr_c (substr str_in n 1))
  40.     (cond
  41.       ((member chr_c lst_n)
  42.        (num_add)
  43.       )
  44.       ((= chr_c ".")
  45.        (if (< n len1)
  46.           (setq chr_n (substr str_in (1+ n) 1))
  47.          (setq chr_n "")
  48.        );if
  49.        (if (member chr_n lst_n)
  50.          (num_add)
  51.          (str_add)
  52.         )      
  53.       )
  54.       ((= chr_c "-")
  55.        (if (< n len1)
  56.           (setq chr_n (substr str_in (1+ n) 1))
  57.          (setq chr_n "")
  58.        );if
  59.        (if (or (member chr_n lst_n)(= chr_n "."))
  60.          (num_add)
  61.          (str_add)
  62.         )
  63.       )
  64.       ((= chr_c "+")
  65.        (if (< n len1)
  66.           (setq chr_n (substr str_in (1+ n) 1))
  67.          (setq chr_n "")
  68.        );if
  69.        (if (or (member chr_n lst_n)(= chr_n "."))
  70.          (num_add)
  71.          (str_add)
  72.         )
  73.       )
  74.       ((or (= chr_c "E")(= chr_c "e"))
  75.        (if (< n len1)
  76.           (setq chr_n (substr str_in (1+ n) 1))
  77.          (setq chr_n "")
  78.        );if
  79.        ;C-2: 修改判断条件使之支持‘2e-3’类型的数据
  80.        (if (or
  81.              (and (member chr_n lst_n)(member chr_p lst_n))
  82.              (and (= chr_n "+")(member chr_p lst_n))
  83.              (and (= chr_n "-")(member chr_p lst_n))
  84.            );or
  85.          (num_add)
  86.          (str_add)
  87.         )
  88.       )
  89.       (T(str_add))
  90.     );cond
  91.    
  92.     (setq n (1+ n)
  93.           chr_p chr_c
  94.     )
  95.   );repeat

  96.   (if (> len1 0)
  97.     (progn
  98.       (if (/= str_c "")(setq lst_out (cons str_c lst_out)))
  99.       (setq lst_out (reverse lst_out))
  100.     );progn
  101.   );if
  102.   lst_out
  103. )


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

使用道具 举报

发表于 2002-10-11 09:10:00 | 显示全部楼层
刚才把代码改动了一下,加入对不合理输入的处理
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-10-11 11:06:03 | 显示全部楼层
最初由 Qlin 发布
[B]刚才把代码改动了一下,加入对不合理输入的处理 [/B]


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

使用道具 举报

发表于 2002-10-11 12:54:41 | 显示全部楼层
原来已经考虑了“2E3"类型,
又改一下,加入对"2e-3"类型的支持

输入:
_$ (mixstring->list "中文2.35e+35测试-.035list2E3just a test89.0end")
输出:
("中文" "2.35e+35" "测试" "-.035" "list" "2E3" "just a test" "89.0" "end")
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2002-10-11 13:04:00 | 显示全部楼层
最初由 Qlin 发布
[B]原来已经考虑了“2E3"类型,
又改一下,加入对"2e-3"类型的支持

输入:
_$ (mixstring->list "中文2.35e+35测试-.035list2E3just a test89.0end")
输出:
("中文" "2.35e+35" "测试" "-.035" "list" "2E3" "j... [/B]

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

使用道具 举报

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

 楼主| 发表于 2002-10-12 13:35:04 | 显示全部楼层
最初由 Qlin 发布
[B]原来已经考虑了“2E3"类型,
又改一下,加入对"2e-3"类型的支持

输入:
_$ (mixstring->list "中文2.35e+35测试-.035list2E3just a test89.0end")
输出:
("中文" "2.35e+35" "测试" "-.035" "list" "2E3" "j... [/B]


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

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2002-10-12 18:47:51 | 显示全部楼层
能否改成带参数的
如:科学技术法E   (mixstring->list   "......" 1)
    不用时        (mixstring->list   "......" 0)
E毕竟不是每次都表示数字


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

使用道具 举报

发表于 2002-10-12 21:47:55 | 显示全部楼层
能否举个例子:'E'在哪种情况下的输出不符合你的要求?

关于分区轴号,很难有一个规则可以判断你说的情况,除了
"3-12"还有"A-1" "AB-1"这样形式的轴号,同字符串"TEA-15"无法分辨。

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-26 08:11 , Processed in 0.196369 second(s), 60 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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