找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 339|回复: 6

[源码] [TB-LISP函数]:TBC:Hz->Num 汉字数值转化为数字

[复制链接]

已领礼包: 934个

财富等级: 财运亨通

发表于 2022-6-7 14:35:03 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 tengteb 于 2022-6-13 18:36 编辑

  ;汉字数值转化为数字。bStr:T--结果用字符串表示,否则超过21亿的数会转化为实数
(defun TBC:Hz->Num (txt bStr / Format Func ws v1 v2 v4 v8)

  (defun Format (txt v)
    (setq v (itoa v))
    (and
      (/= "" txt)
      (repeat (- 8 (strlen v)) (setq v (strcat "0" v)))
      (setq v (strcat txt v))
    ) ;and
    v
  ) ;defun
  (defun Func (w / i)
    (setq i (vl-position w ws))
    (and (> i 14) (setq i (- i 14)))
    (cond
      ((not i)) ;忽略无效汉字
      ((< i 10) (setq v1 i))
      ((< i 13)
       (and (= i 10) (= v1 0) (setq v1 1))
       (setq v2        (+ v2 (* v1 (expt 10 (- i 9))))
             v1        0
       )
      )
      ((= i 13)
       (setq v4        (* (+ v2 v1) 10000)
             v2        0
             v1        0
       )
      )
      ((= i 14)
       (if bStr
         (setq v8 (Format v8 (+ v4 v2 v1)))
         (setq v8 (+ v8 v4 v2 v1)
               v8 (* v8 (TBC:IIf (> v8 20) 1.0 1) 100000000) ;整数最大值2147483647
         )
       ) ;if
       (setq v4        0
             v2        0
             v1        0
       )
      )
    ) ;cond
  ) ;defun
  (setq        ws "零一二三四五六七**十百千万亿壹贰叁肆伍陆柒捌玖拾佰仟"
        ws (TBC:Split ws 2)
        v1 0
        v2 0
        v4 0
        v8 (TBC:IIf bStr "" 0)
  )
  (mapcar 'Func (TBC:Split txt 2))
  (if bStr
    (Format v8 (+ v4 v2 v1))
    (+ v8 v4 v2 v1)
  ) ;if
)

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2022-12-6 16:29:11 | 显示全部楼层
zizhumeizhilian邀请您访问晓东CAD家园-论坛
http://bbs.xdcad.net/?fromuid=776841
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2022-12-6 19:33:09 | 显示全部楼层
zizhumeizhilian邀请您访问晓东CAD家园-论坛 http://bbs.xdcad.net/?fromuid=776841
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2022-12-6 21:16:37 | 显示全部楼层
你好!   差的函数能否不上   谢谢!

点评

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

使用道具 举报

发表于 2022-12-6 21:39:19 | 显示全部楼层
guosheyang2 发表于 2022-12-6 21:16
你好!   差的函数能否不上   谢谢!

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

使用道具 举报

发表于 2022-12-6 21:45:16 | 显示全部楼层
测试了下
(setq txt "四千零六十九")
(TBC:Hz->Num txt T)      返回"409"
(setq txt "四千一百六十九")
(TBC:Hz->Num txt T)   返回 "419"      
(setq txt "肆仟壹佰陆拾玖")
(TBC:Hz->Num txt T)     返回"30000000018"   
    请问tengteb朋友   是我哪里没弄对头吗     谢谢!  
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-24 06:50 , Processed in 0.403651 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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