xyp1964
发表于 2014-5-10 23:04:40
【KAIXIN】
发表于 2014-5-11 06:38:00
这个晓东上面 有函数
ysq101
发表于 2014-5-11 12:14:30
品茗新秀 发表于 2014-5-10 17:49 static/image/common/back.gif
为什么不把自已写的贴出来,主要是自已是写的如是1,变量就是一,以此类推,实在太笨的方法,但可以一次写入 ...
多笨的办法老师们也不会笑你。。至少你写了。。。没成功
说出你的想法和思路 大师们会给你指正或修改
你一味地求程序,,大师们也不会帮你
怀疑你压根就没写
品茗新秀
发表于 2014-5-14 18:05:14
本帖最后由 品茗新秀 于 2014-5-14 18:09 编辑
ysq101 发表于 2014-5-11 12:14 http://bbs.mjtd.com/static/image/common/back.gif
多笨的办法老师们也不会笑你。。至少你写了。。。没成功
说出你的想法和思路 大师们会给你指正或修改
...
实在想不起来,还还求高手帮助,对我实在找不到好办法。几天一直在想如何搞。这个怎么好象简单,实质难得不得了。
跪求各路大神不吝赐教
ysq101
发表于 2014-5-14 20:24:53
品茗新秀 发表于 2014-5-14 18:05 static/image/common/back.gif
实在想不起来,还还求高手帮助,对我实在找不到好办法。几天一直在想如何搞。这个怎么好象简单,实质难 ...
贴码出来看看
品茗新秀
发表于 2014-5-14 21:47:37
看了这个可能对我有一定的帮助,贴出来;;数字转中文
;;num string 数字
;;mod t 中文数字 nil 大写中文数字
(defun XD::String:Num->CN (Stringmod / List:Split
ChkZerop Int->CN l1 l2
nint nzeropdot int zp
l
)
(defun list:split (lst n / ll nl)
(while lst
(repeat n
(setq ll(cons (car lst) ll)
lst (cdr lst)
)
)
(setq nl (cons (reverse ll) nl)
ll nil
)
)
(reverse nl)
)
(defun chkzerop (lst)
(mapcar '(lambda (x)
(mapcar '(lambda (a)
(if (or (= a "0") (null a))
""
a
)
)
x
)
)
lst
)
)
(defun Int->CN (lst mod / str tf)
(setq lst (mapcar '(lambda (x)
(mapcar '(lambda (a b)
(if (= a "")
""
(strcat
(if mod
(cadr (assoc a l2))
(caddr (assoc a l2))
)
(if mod
(car b)
(cadr b)
)
)
)
)
x
l1
)
)
lst
)
lst (mapcar
'(lambda (a / l)
(setq l (mapcar '(lambda (x y)
(if (= x "")
(if (= y "")
"零"
(strcat "零" y)
)
(strcat x y)
)
)
a
(cdr a)
)
)
(vl-string-subst "零" "零零" (strcat (car l) (caddr l)))
)
(reverse (mapcar 'reverse lst))
)
lst (mapcar '(lambda (x)
(if (= x "零")
""
x
)
)
lst
)
)
(if (= (substr (car lst) 1 2) "零")
(setq lst (cons (substr (car lst) 3) (cdr lst)))
)
(setq lst (reverse lst)
str (car lst)
tft
)
(while (setq lst (cdr lst))
(if tf
(setq str (strcat (car lst) "万" str)
tfnil
)
(setq str (strcat (car lst) "亿" str)
tft
)
)
)
(setq str (vl-string-subst "万" "零万" str)
str (vl-string-subst "亿" "零亿" str)
)
(if mod
(xdrx_string_replace str "零" "〇")
str
)
)
;;Main
(setq zp (vl-string-search "." String)
l1 '(("" "") ("十" "拾") ("百" "佰") ("千" "仟"))
l2 '(("0" "〇" "零")
("1" "一" "壹")
("2" "二" "贰")
("3" "三" "叁")
("4" "四" "肆")
("5" "五" "伍")
("6" "六" "陆")
("7" "七" "柒")
("8" "八" "捌")
("9" "九" "玖")
)
)
(if (or zp (and zp (zerop zp)))
(setq nzerop (XD::String:RegexpS "\\d" (substr String (+ 2 zp)) "")
nzerop (strcat "点"
(apply 'strcat
(if mod
(mapcar '(lambda (x)
(cadr (assoc x l2))
)
nzerop
)
(mapcar '(lambda (x)
(caddr (assoc x l2))
)
nzerop
)
)
)
)
nint (substr String 1 zp)
)
(setq nzerop ""
nint String
)
)
(if (/= nint "")
(setq nint (chkzerop
(list:split
(reverse (XD::String:RegexpS "\\d" nint "")
)
4
)
)
nint (vl-string-right-trim "零" (Int->CN nint mod))
)
(setq nint "")
)
(strcat nint nzerop)
)
edata
发表于 2014-5-17 16:48:24
本帖最后由 edata 于 2014-5-17 21:24 编辑
(defun int->str2(sk_n sk_flag / sk- A I K LST LST2 S SK_N->STR1 SK_N->STR2 STR)
(setq sk_n->str1(list(list 0 (if sk_flag "〇" "零"))
(list 1 (if sk_flag "一" "壹"))
(list 2 (if sk_flag "二" "贰"))
(list 3 (if sk_flag "三" "叁"))
(list 4 (if sk_flag "四" "肆"))
(list 5 (if sk_flag "五" "伍"))
(list 6 (if sk_flag "六" "陆"))
(list 7 (if sk_flag "七" "柒"))
(list 8 (if sk_flag "八" "捌"))
(list 9 (if sk_flag "九" "玖")))
sk_n->str2(list'(1 "")
(list 2 (if sk_flag "十" "拾"))
(list 3 (if sk_flag "百" "佰"))
(list 4 (if sk_flag "千" "仟"))
(list 5 "万")
(list 6 (if sk_flag "十万" "拾万"))
(list 7 (if sk_flag "百万" "佰万"))
(list 8 (if sk_flag "千万" "仟万"))
(list 9 "亿万")
(list 10 (if sk_flag "十亿" "拾亿"))
(list 11 (if sk_flag "百亿" "佰亿"))
(list 12 "万亿")
(list 13 "兆")))
(if (< sk_n 0)(setq sk_n(abs sk_n) sk- "负"))
(if(= sk_n 0)(setq lst2 "零")
(progn
(setq str(rtos sk_n 2 0) lst'() i 0 lst2 "" )
(while (/= (setq s(substr str (setq i(1+ i)) 1)) "")
(setq lst(cons s lst))
)
(setq lst(reverse lst) k (1+(length lst)))
(while(setq a(car lst))
(setq lst2(strcat lst2
(cond
((and (= a "0") (= k 2)) "")
((and (= a "0") (> k 1)(= (cadr lst) "0"))(setq k(1- k)) "")
((and (= a "0") (> k 1)(/= (cadr lst) "0"))(setq k(1- k)) "零")
(t (strcat(cadr(assoc (atoi a) sk_n->str1))(cadr(assoc (setq k(1- k)) sk_n->str2)))))
))
(setq lst(cdr lst))
)
(if sk-(setq lst2(strcat sk- lst2)))
lst2
)
)
)
;;;写文字程序
;;;输入实数整型范围
(defun c:tt (/ i p k)
(or(and (setq i(getreal "\nEnter integer number:"))(if (< i 0)(setq k t i (1+ i))(setq i(1- i))))(setq i 0))
(if i
(while (setq p (getpoint "\nInsert point:"))
(entmake (list '(0 . "TEXT")
(cons 1 (int->str2 (cond
((and (not k) (= i -1))(setq i (1+ i)))
(k (setq i (1- i)))
(t (setq i (1+ i))))
nil
)
)
(cons 10 p)
(cons 40 50)
)
)
))
(princ)
)
lucas_3333
发表于 2014-5-17 17:15:27
edata 发表于 2014-5-17 16:48 static/image/common/back.gif
E大,好程序!
品茗新秀
发表于 2014-5-17 21:05:54
edata 发表于 2014-5-17 16:48 static/image/common/back.gif
这一句没看懂 (setq str(rtos sk_n 2 8) lst'() i 0 lst2 "" )
edata
发表于 2014-5-17 21:26:17
应该是(rtos sk_n 2 0) ,原本想加小数点,但是用不到,就算了。忘了改回来。