找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 301|回复: 2

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

[复制链接]

已领礼包: 934个

财富等级: 财运亨通

发表于 2022-6-7 12:36:09 | 显示全部楼层 |阅读模式

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

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

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

  ;数字转化为汉字。bCase:T--大写;bOne:T--保留首部的“一十”前的“一”
(defun TBC:Num->Hz (x bCase bOne / Split Join us ns v)
  (defun Split (x / Func lst)
    (defun Func (x)
      (setq lst (cons (fix (rem x 10)) lst))
      (and (< 9 x) (Func (/ x 10)))
    ) ;defun
    (Func x)
    (setq lst (TBC:Chunk (reverse lst) 8))
    (mapcar '(lambda (e) (TBC:Chunk e 4)) lst)
  ) ;defun
  (defun Join (lst / Unit Join1 Join4 Join8 i vs)
    (defun Unit (i / u)
      (cond
        ((>= i 8) (setq u (strcat (Unit (- i 8)) (nth 5 us))))
        ((> i 4) (setq u (strcat (nth (- i 4) us) (nth 4 us))))
        (T (setq u (nth i us)))
      ) ;cond
      u
    ) ;defun
    (defun Join1 (x / n)
      (setq n (nth x ns))
      (cond
        ((/= x 0) (setq vs (cons (strcat n (Unit i)) vs)))
        ((not vs)) ;后面全为0
        ((/= "零" (car vs)) (setq vs (cons n vs)))
      ) ;cond
      (setq i (1+ i))
    ) ;defun
    (defun Join4 (itm / i vs)
      (setq i 0)
      (mapcar 'Join1 itm)
      (TBC:Join vs "")
    ) ;defun
    (defun Join8 (itm / v vv)
      (setq v  (Join4 (cadr itm)) ;本段不足5位数时返回""
            vv (Join4 (car itm))
      )
      (and (/= v "") (/= v "零") (setq v (strcat v "万")))
      (and (/= vv "零") (setq v (strcat v vv)))
      (and
        (> i 0)
        (/= v "零")
        (setq v (strcat v "亿"))
      ) ;and
      (setq vs (cons v vs))
      (setq i (1+ i))
    ) ;defun
    (setq i 0)
    (mapcar 'Join8 lst)
    (TBC:Join vs "")
  ) ;defun
  (setq us (TBC:Split (TBC:IIf bCase " 拾 佰 仟" " 十 百 千") " ")
        ns (TBC:IIf bCase "壹贰叁肆伍陆柒捌玖" "一二三四五六七**")
        ns (TBC:Split (strcat "零" ns) 2)
        v  (Join (Split x))
  )
  (and
    (not bOne)
    (wcmatch v "一十*")
    (setq v (substr v 3 (strlen v)))
  ) ;and
  v
)

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

已领礼包: 756个

财富等级: 财运亨通

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 23:32 , Processed in 0.326418 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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