求助:字符串分割
请问大侠:“ED4-01#100+100 TB 325”怎样以“#”为界分解成“ED4-01”和“100+100 TB 325”两行文字呢(setq str "ED4-01#100+100 TB 325")
(parse str "#")
Parse 自定义函数 明经旧帖中有 Andyhon 发表于 2014-9-27 20:41 static/image/common/back.gif
(setq str "ED4-01#100+100 TB 325")
(parse str "#")
可是我不会把分解成的两行文字插入到原来文字的地方,老大教下我呀 一个最笨的办法:
(defun c:test()
(vl-load-com)
(setq zf "ED4-01#100+100 TB 325")
(setq zf (vl-string-translate "#" " " zf))
(setq zf (vl-string-translate "+" " " zf))
(setq zf (read(strcat "(" zf ")")))
(setq zff1 (car zf))
(setq zf2 (cadr zf))
(setq zf3 (caddr zf))
(setq zf4 (cadddr zf))
(setq zf4 (vl-string-translate "" "" zf4))
(setq zf5 (last zf))
(setq zff2 (strcat (rtos zf2 2 0) "+" (rtos zf3 2 0) " " zf4 " " (rtos zf5 2 0)))
(print "zff1=")(princ zff1)(princ)
(print "zff2=")(princ zff2)(princ)
)
(setq str "ED4-01#100+100 TB 325")
(setq a# (vl-string-search "#" str))
(setq a1 (substr str 1 a#))
(setq a2 (substr str (+ a# 2))) (defun c:test()
(vl-load-com)
(setq zf "ED4-01#100+100 TB 325")
(setqm (vl-string-position (ascii "#") zf))
(setq zf1 (substr zf 1 m) zf2 (substr zf (+ m 2)))
(print "zf1=")(princ zf1)(princ)
(print "zf2=")(princ zf2)(princ)
) 谢谢各位的热心回复,我先在用parse 可以把支付串分解成两个了,但是我不会再原文字位置上写出这两个新文字 小师傅 发表于 2014-9-27 21:26 static/image/common/back.gif
可是我不会把分解成的两行文字插入到原来文字的地方,老大教下我呀
简单的可以这样
1 先用textbox计算出第一部分"ED4-01"的长度。
2 拷贝原文字,后移一个距离,将内容改为后面的"100+100 TB 325"" 自贡黄明儒 发表于 2014-9-28 11:12 static/image/common/back.gif
简单的可以这样
1 先用textbox计算出第一部分"ED4-01"的长度。
2 拷贝原文字,后移一个距离,将内容改为 ...
谢谢黄大师,我马上试试 小师傅 发表于 2014-9-28 11:15 http://bbs.mjtd.com/static/image/common/back.gif
谢谢黄大师,我马上试试
看看是不是这个意思:
(defun c:ttrim (/ ss i l0 en ne eg ng e0 e1 j sr)
(command ".color" (getvar "cecolor"))
(if (not acet-tjust)
(load "acetutil3")
)
(setq sr (getstring "\n输入分隔字符: "))
(if (member sr '("*" "#" "@" "." "?" "~"))
(setq sr1 (strcat "`" sr))
(setq sr1 sr)
)
(princ "\n选择需要去分隔符的文本: ")
(setq ss (ssget (list '(0 . "TEXT") (cons 1 (strcat "*" sr1 "*")))))
(if ss
(progn
(setq l0 (sslength ss)
i-1
)
(acet-tjust ss "R")
)
)
(repeat l0
(setq i(1+ i)
en (ssname ss i)
eg (entget en)
e1 (cdr (assoc 1 eg))
)
(if (wcmatch e1 (strcat sr1 "*"))
(progn
(setq e1 (vl-string-left-trim sr e1)
eg (subst (cons 1 e1) (assoc 1 eg) eg)
)
(entmod eg)
)
)
(if (wcmatch e1 (strcat "*" sr1))
(progn
(acet-tjust (ssadd en) "S")
(setq eg (entget en)
e1 (cdr (assoc 1 eg))
e1 (vl-string-right-trim sr e1)
eg (subst (cons 1 e1) (assoc 1 eg) eg)
)
(entmod eg)
)
(acet-tjust (ssadd en) "S")
)
(while (wcmatch e1 (strcat "*" sr1 "*"))
(setq eg (entget en)
ng (entmake eg)
ne (entlast)
ng (entget ne)
e0 (cdr (assoc 1 ng))
e0 (substr e0 1 (setq j (vl-string-search sr e0)))
ng (subst (cons 1 e0) (assoc 1 ng) ng)
)
(entmod ng)
(acet-tjust (ssadd en) "R")
(setq eg (entget en)
e1 (cdr (assoc 1 eg))
e1 (vl-string-left-trim sr (substr e1 (+ j 1)))
eg (subst (cons 1 e1) (assoc 1 eg) eg)
)
(entmod eg)
(setq eg (entget en)
e1 (cdr (assoc 1 eg))
)
(acet-tjust (ssadd en) "S")
)
)
(princ)
)
这是以前一个小程序改的,需要ET支持。
原帖:http://bbs.mjtd.com/thread-99236-1-1.html
页:
[1]
2