找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 702|回复: 0

[试用]:将中文数字转化为阿拉伯数字

[复制链接]
发表于 2002-11-13 16:03:10 | 显示全部楼层 |阅读模式

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

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

×
将中文数字转化为阿拉伯数字(只可以处理小于十万的数字)

;;一般我只用它来处理图框的中英文数字加减,
;;谁有兴趣做个范围更大的?
;;
;;

  1. (defun cn2arab-dd (  string / arabia-cnlst-dd i n sstr kstr knum snum num )

  2. (setq arabia-cnlst-dd '((  "零" . 0)  ("一" . 1 ) ( "二" . 2) ( "三" . 3) ( "四" . 4) ( "五" . 5 )   ( "六" . 6 )  ( "七" . 7) ("八" . 8) ("九" . 9) ( "十" . 10) ("百" . 100) ( "千" . 1000)  ("万" . 10000))
  3. )

  4. (if (= "十" (substr string 1 2)) (setq string (strcat "一" string)))
  5. (setq num 0)
  6. (setq i 1)
  7. (setq kstr "零")
  8. (setq n (1+ (/ (strlen string) 4)))
  9. (while (/= kstr "")
  10.   (setq sstr (substr string i 2))
  11. (if (/= "" sstr) (setq snum (cdr (assoc sstr arabia-cnlst-dd))) (setq snum 0))
  12.   (setq kstr (substr string (+ i 2) 2))
  13. (if (/= "" kstr) (setq knum (cdr (assoc kstr arabia-cnlst-dd))) (setq knum 1))
  14. (if  (= sstr "零")
  15.      (if (= "十" kstr) (setq num (+ num  knum)) (setq  i (-  i 2 )))
  16.      (setq num (+ num (* snum knum)))
  17.   )
  18. (setq i (+ 4 i ))
  19. )
  20. num
  21. )
  22. ;
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-9-26 07:50 , Processed in 0.176094 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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