马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
将中文数字转化为阿拉伯数字(只可以处理小于十万的数字)
;;一般我只用它来处理图框的中英文数字加减,
;;谁有兴趣做个范围更大的?
;;
;;

- (defun cn2arab-dd ( string / arabia-cnlst-dd i n sstr kstr knum snum num )
- (setq arabia-cnlst-dd '(( "零" . 0) ("一" . 1 ) ( "二" . 2) ( "三" . 3) ( "四" . 4) ( "五" . 5 ) ( "六" . 6 ) ( "七" . 7) ("八" . 8) ("九" . 9) ( "十" . 10) ("百" . 100) ( "千" . 1000) ("万" . 10000))
- )
- (if (= "十" (substr string 1 2)) (setq string (strcat "一" string)))
- (setq num 0)
- (setq i 1)
- (setq kstr "零")
- (setq n (1+ (/ (strlen string) 4)))
- (while (/= kstr "")
- (setq sstr (substr string i 2))
- (if (/= "" sstr) (setq snum (cdr (assoc sstr arabia-cnlst-dd))) (setq snum 0))
- (setq kstr (substr string (+ i 2) 2))
- (if (/= "" kstr) (setq knum (cdr (assoc kstr arabia-cnlst-dd))) (setq knum 1))
- (if (= sstr "零")
- (if (= "十" kstr) (setq num (+ num knum)) (setq i (- i 2 )))
- (setq num (+ num (* snum knum)))
- )
- (setq i (+ 4 i ))
- )
- num
- )
- ;
|