明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: liminnet

[原创]阿拉伯数字与中国的大小写数字"沟通"的终结者

  [复制链接]
 楼主| 发表于 2009-7-31 08:45:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2009-7-31 09:02:00 | 显示全部楼层

水平高低有别是正常的。

发帖子既要谦虚、又要不卑不亢,高手别鄙视新手,新手也别谄媚高手。

尊重别人是起码的做人修养,也是论坛和谐的关键所在。

建议楼主删除不当言论!

 楼主| 发表于 2009-7-31 09:08:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2009-7-31 13:39:00 | 显示全部楼层

冤怨相报何时了!阿弥陀佛!

 楼主| 发表于 2010-5-4 17:46:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2010-12-26 19:38:59 | 显示全部楼层
提示: 该帖被管理员或版主屏蔽
 楼主| 发表于 2010-12-26 20:45:45 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2010-12-26 21:03:39 | 显示全部楼层
狂刀无痕 发表于 2009-7-30 23:01
是拍马最多还是论文最多,请说清楚

肯定是马屁啦
发表于 2010-12-27 10:11:45 | 显示全部楼层
大家不要在这吵吵闹闹啦!这是学习交流的地方!我发个相同功能源码上来,供大家交流学习!不知道liminnet 的程序思路是否相同呢!

  1. ;;;(gxl-num->Big n b) 数字小写变大写,参数:n 数字或数字字符串 b T为中文大写 nil 中文小写
  2. (defun gxl-num->Big (n b / numlst numlst1 dimzin rtn1 rtn2 strnum1 strnumlst1 strnum2 strnumlst2 m flag zero)
  3.   (if b
  4.   (setq numlst '(("0" . "零") ("1" . "壹")("2" . "贰")("3" . "叁")("4" . "肆")("5" . "伍")("6" . "陆")("7" . "柒")("8" . "捌")("9" . "玖"))
  5.         numlst1 '("" "拾" "佰" "仟" "万" "拾" "佰" "仟" "亿" "拾" "佰" "仟" "万" "拾" "佰" "仟")
  6.         )
  7.     (setq numlst '(("0" . "〇") ("1" . "一")("2" . "二")("3" . "三")("4" . "四")("5" . "五")("6" . "六")("7" . "七")("8" . "八")("9" . "九"))
  8.         numlst1 '("" "十" "百" "千" "万" "十" "百" "千" "亿" "十" "百" "千" "万" "十" "百" "千")
  9.         )
  10.     )
  11.   ;;;将n转为字串
  12.   (if (= 'INT (type n))
  13.     (setq n (itoa n))
  14.     (if (= 'REAL (type n))
  15.       (setq n (rtos n 2 6))
  16.       (if (= 'STR (type n))
  17.       (progn
  18.       (setq n (atof n))
  19.       (if (equal n (fix n))
  20.         (setq n (rtos n 2 0))
  21.         (setq n (rtos n 2 6))
  22.         )
  23.       )
  24.       )
  25.     )
  26.     )
  27.   ;;;如果包含小数位数,将字串分为 strnum1 strnum2
  28. (setq k (VL-STRING-SEARCH "." n))
  29.   (if k (setq strnum1 (substr n 1 k)
  30.               strnum2 (substr n (+ k 2))
  31.               )
  32.     (setq strnum1 n strnum2 nil)
  33.     )
  34.   ;;;将strnum1 分解为表,顺序倒置
  35.   (setq m 1)
  36. (repeat (strlen strnum1)
  37.    (setq strnumlst1 (cons (substr strnum1 m 1)strnumlst1)
  38.          m (1+ m)
  39.          )
  40.    )
  41.     ;;;将strnum2 分解为表,顺序不变
  42.    (setq m 1)
  43.   (if strnum2
  44.     (progn
  45. (repeat (strlen strnum2)
  46.    (setq strnumlst2 (cons (substr strnum2 m 1) strnumlst2)
  47.          m (1+ m)
  48.          )
  49.    )
  50.    (setq strnum2 (apply 'strcat  strnumlst2))
  51.   (setq strnum2 (itoa (atoi strnum2))
  52.         strnumlst2 nil
  53.         m 1)
  54. (repeat (strlen strnum2)
  55.    (setq strnumlst2 (cons (substr strnum2 m 1) strnumlst2)
  56.          m (1+ m)
  57.          )
  58.    )
  59. )
  60.     )
  61.   ;;;将strnumlst1转为大写
  62.   (setq m 0 )
  63.   (repeat (length strnumlst1)
  64.     (setq rtn1 (cons (strcat (cdr (assoc (nth m strnumlst1) numlst)) (nth m  numlst1)) rtn1))
  65.     (setq m (1+ m))
  66.    
  67.     )
  68.   (setq m 0
  69.         strnum1 "")
  70.   (repeat (length rtn1)
  71.     (if b
  72.     (setq flag (WCMATCH  (nth m rtn1) "零*"))
  73.       (setq flag (WCMATCH  (nth m rtn1) "〇*"))
  74.       )
  75.     (if (not flag)
  76.       (setq strnum1 (strcat strnum1 (nth m rtn1)))
  77.       (if (not zero)
  78.       (setq strnum1 (if b (strcat strnum1 "零")(strcat strnum1 "〇"))
  79.             zero t
  80.             )
  81.         )
  82.        
  83.       )
  84.     (setq m (1+ m))
  85.     )
  86.     ;;;将strnumlst2转为大写
  87.   (if strnumlst2
  88.     (setq strnum2 (apply ' strcat (mapcar '(lambda (x) (cdr (assoc x numlst))) strnumlst2)))
  89.     )
  90.   ;;;输出结果
  91.   (if strnumlst2
  92.   (strcat strnum1 "." strnum2)
  93.     strnum1
  94.     )
  95.   )
发表于 2010-12-27 12:41:40 | 显示全部楼层
感谢Gu_xl 版主分享程序
学习了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-10-2 18:32 , Processed in 0.163597 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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