明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1133|回复: 9

[源码] 中文数字转阿拉伯数字

[复制链接]
发表于 2023-3-24 13:40:10 | 显示全部楼层 |阅读模式
本帖最后由 kkq0305 于 2023-3-24 13:43 编辑

; 功能:中文数字转阿拉伯数字

; 示例:(wz2num "一亿三千零六十万") >>>1.306e+008


(defun wz2num (str / numlst alst1 alst2 num lnum1 lnum2 fstr a)
  (setq        numlst '(("零" . 0)
                 ("一" . 1)
                 ("二" . 2)
                 ("三" . 3)
                 ("四" . 4)
                 ("五" . 5)
                 ("六" . 6)
                 ("七" . 7)
                 ("八" . 8)
                 ("九" . 9)
                )
        alst1  '(("十" . 10)
                 ("百" . 100)
                 ("千" . 1000.0)
                )
        alst2  '(("万" . 10000.0)
                 ("亿" . 100000000.0)
                )
        num    0
        lnum1  0
        lnum2  0
  )
  (while (read str)
    (setq fstr (substr str 1 2)
          str  (substr str 3)
    )
    (cond ((setq a (assoc fstr alst2))
           (setq num   (+ num (* (+ lnum1 lnum2) (cdr a)))
                 lnum1 0
                 lnum2 0
           )
          )
          ((setq a (assoc fstr alst1))
           (if (and (zerop lnum2) (zerop num))
             (setq num (cdr a))
             (setq lnum1 (+ lnum1 (* lnum2 (cdr a)))
                   lnum2 0
             )
           )
          )
          ((setq a (assoc fstr numlst)) (setq lnum2 (cdr a)))
          (t nil)
    )
  )
  (+ num lnum1 lnum2)
)

评分

参与人数 6明经币 +6 金钱 +10 收起 理由
菜鸟初来乍到 + 1
bssurvey + 1 赞一个!
tigcat + 1 + 10 很给力!
guosheyang + 1 赞一个!
vitalgg + 1 赞一个!
xj6019 + 1 很给力!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2023-3-24 13:56:43 | 显示全部楼层
顶,谢谢大佬分享。

总算有点正经的帖子了
看了好多天来明经水帖子的了
回复 支持 1 反对 0

使用道具 举报

发表于 2023-3-24 13:46:40 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2023-3-24 13:47:36 | 显示全部楼层
666666666666
发表于 2023-3-24 14:07:10 | 显示全部楼层
可以的,感谢
发表于 2023-3-24 14:09:43 | 显示全部楼层
本帖最后由 xj6019 于 2023-3-24 14:20 编辑

好东西就要支持,伟大无私

功能关联帖:
http://bbs.mjtd.com/forum.php?mo ... =%CA%FD%D7%D6%D7%AA   需要注意8楼的修改意见
发表于 2023-3-25 08:58:58 | 显示全部楼层
感谢递归哥的分享!
发表于 2023-3-26 18:43:04 | 显示全部楼层
先留个脚印,明天过来投币支持
发表于 2023-3-28 15:11:22 | 显示全部楼层
仔细看了下提取值,妙啊,大佬们的代码就是简洁,自己写的话估计要写好几十行上百行!学习了
 楼主| 发表于 2023-3-30 12:48:57 | 显示全部楼层
Klein 发表于 2023-3-28 15:11
仔细看了下提取值,妙啊,大佬们的代码就是简洁,自己写的话估计要写好几十行上百行!学习了

互相借鉴,一个人的想点子,终究是抵不过无数个人的点子。发挥个人的智慧。相互学习成长。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-16 13:49 , Processed in 0.194461 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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