xiatian 发表于 2009-8-28 09:48:00

[求助]如何提取比如“"P1-60"”中的60和“P1-”

<p>在CAD中因为要给没个地形图命名,而且还是累加的,比如“"P1-60"”、"P1-61"、"P1-62""P1-63",怎们自动完成这些标注的自动累加。</p><p>如果是单个的数字比如60、61、62我可以实现,现在的问题是没法实现提取其中的数字和字母,请问用什么函数可以完成这个功能。</p><p>下面是我自动完成数据相加的程序:</p><p>(defun c:copm()&nbsp; ;多重复制加数<br/>&nbsp;(setq di(getint"输入间距:"))<br/>&nbsp;(setq ss(entsel"选择要排列的数"));选择物体,提取联合属性列表<br/>&nbsp;(setq en(car ss))<br/>&nbsp;(setq endata(entget en))<br/>&nbsp;<br/>&nbsp;(setq oldh(cdr(assoc 40 endata)));提取字高<br/>&nbsp;(setq olda(cdr(assoc 50 endata)));提取角度<br/>&nbsp;(setq oldtt(atof(angtos olda)));把弧度变为度<br/>&nbsp;<br/>&nbsp;(setq oldt(cdr(assoc 1 endata)));提取标注,<br/>&nbsp;(setq oldti(atoi oldt));标注负值<br/>&nbsp;(setq newt(+ oldti di)) </p><p>&nbsp;(setq pa(getpoint "\n标注位置:"))<br/>&nbsp;(command "text" pa oldh oldtt newt)<br/>&nbsp;</p><p>&nbsp;&nbsp; (while<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq ens(entlast))<br/>&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq entdata(entget ens))<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq oldct(cdr(assoc 10 entdata)))<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq oldht(cdr(assoc 40 entdata)))<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq oldat(cdr(assoc 50 entdata)))<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq oldatt(atof(angtos oldat)))</p><p>&nbsp;&nbsp;&nbsp;&nbsp; (setq oldtt(cdr(assoc 1 entdata)))<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq oldtit(atoi oldtt))<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq newtt(+ oldtit di))<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq pat(getpoint))<br/>&nbsp;&nbsp;&nbsp;&nbsp; (command "text" pat oldht oldatt newtt)<br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp; <br/>&nbsp;&nbsp; )<br/>&nbsp;)</p><p></p><p></p>

phoenixdjq 发表于 2009-8-28 13:57:00

<p>这个是我以前做的一个程序,下面我用红色标出的部分,应该你能用到</p><p>就是先找到“-”的位置,然后提出"-"前面的前缀和"-"后面的数字</p><p>运算之后,把运算完的数跟前缀用strcat连在一起就行了</p><p>由于比较忙,不能修改程序了,你参考一下吧</p><p></p><p></p><p>;;;子程序<br/>(defun c:gf()<br/>(setq bc (getint "\n 请输入步长:"))<br/>)</p><p></p><p>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br/>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br/>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br/>;;;子程序&nbsp; (中间有横杠,取后面的数字更改)</p><p>(defun ddjq()<br/>(setq shuzi (substr wenzi (+ 2 gang)))<br/>(setq shishu (atoi shuzi))&nbsp;&nbsp; ;把数字改为实数<br/>(setq qianzhui (substr wenzi 1 (+ 1 gang)))<br/>(if (= lll "&lt;")<br/>(progn<br/>(setq b (+ shishu bc nn))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br/>(setq c (itoa b))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br/>(setq d (strcat qianzhui c "&gt;"))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br/>(setq e (cons 1 d))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br/>(setq ddd (subst e wenzizu ddd))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br/>(entmod ddd)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br/>(princ)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br/>)&nbsp; ;end progn&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br/>&nbsp;<br/>(progn<br/>(setq b (+ shishu bc nn))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br/>(setq c (itoa b))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br/>(setq d (strcat qianzhui c))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br/>(setq e (cons 1 d))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br/>(setq ddd (subst e wenzizu ddd))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br/>(entmod ddd)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br/>(princ)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br/>)&nbsp; ;end progn&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;</p><p><br/>) ;end if<br/>)&nbsp; ;end defun</p><p>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br/>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br/>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br/>(defun c:gg()<br/>(prompt "\n 设置步长命令为:gf,初始步长为1")<br/>(if (= bc nil)<br/>(setq bc 1)<br/>)<br/>(setq a (ssget))<br/>(setq len (sslength a))&nbsp;&nbsp; ;取得对象的个数<br/>(setq n 0)<br/>(setq nn 0)<br/>(command "undo" "begin")<br/>(repeat len<br/>(setq ent (ssname a n))&nbsp;&nbsp;&nbsp; ;取得实体的名称<br/>(setq ddd (entget ent))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;得到实体的联合列表</p><p>(setq djq (cdr (assoc 0 ddd)))</p><p>(if (or (= djq "MTEXT") (= djq "TEXT"))</p><p>(dkdk)</p><p>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;end if</p><p>(setq n (+ 1 n))</p><p>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;end repeat</p><p>(setq nn (+ nn bc)) <br/>(command "undo" "end")<br/>)</p><p></p><p><br/>;;;子程序</p><p>(defun dkdk()<br/>(setq wenzizu (assoc 1 ddd))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;取出字的内容(群码为1)<br/>(setq wenzi (cdr wenzizu))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;文字<br/><font color="#ff0000">(setq gang (vl-string-search "-" wenzi))</font></p><p><font color="#ff0000">(setq wenzilen (strlen wenzi))<br/>(setq fanyihou (vl-string-translate "1234567890" "##########" wenzi))&nbsp; ;翻译字符</font></p><p><font color="#ff0000">(setq weizhi (vl-string-search "#" fanyihou))&nbsp; ;找出#的位置</font></p><p><font color="#ff0000">(setq qianzhui (substr wenzi 1 weizhi))&nbsp;&nbsp; ;取出前缀<br/>(setq shuzi (substr wenzi (+ weizhi 1)))&nbsp;&nbsp; ;取出字符串形式的数字<br/>(setq shishu (atoi shuzi))&nbsp;&nbsp; ;把数字改为实数</font>
                <br/>(setq lll (substr wenzi 1 1))&nbsp; ;判断第一个字符是什么</p><p>(if (= gang nil)<br/>(progn</p><p><br/>(cond </p><p></p><p>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br/>((= lll "&lt;")&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>(progn&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br/>(setq b (+ shishu bc nn))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br/>(setq c (itoa b))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br/>(setq d (strcat qianzhui c "&gt;"))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br/>(setq e (cons 1 d))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br/>(setq ddd (subst e wenzizu ddd))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br/>(entmod ddd)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br/>(princ)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br/>)&nbsp; ;end progn&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br/>)&nbsp; ;end first&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br/>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;如果要加判断的话,请选择这里</p><p></p><p>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<br/>(t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br/>(progn&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br/>(setq b (+ shishu bc nn))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br/>(setq c (itoa b))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br/>(setq d (strcat qianzhui c))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br/>(setq e (cons 1 d))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br/>(setq ddd (subst e wenzizu ddd))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br/>(entmod ddd)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br/>(princ)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br/>)&nbsp;&nbsp;&nbsp; ;end progn&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br/>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;<br/>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p><br/>)&nbsp; ;end cond<br/>)&nbsp;&nbsp; ;end progn<br/>(ddjq)<br/>)&nbsp;&nbsp; ;end if</p><p>)&nbsp;&nbsp;&nbsp; ;end defun</p><p></p><p></p><p></p>

5061220 发表于 2009-8-28 14:04:00

又上了一课,嘿嘿!

liminnet 发表于 2009-8-28 14:56:00

liminnet 发表于 2009-8-28 15:23:00

tengte 发表于 2009-8-29 13:36:00

<p>这是我曾经在程序中写的一个函数,满足你的要求应该是绰绰有余。</p><p>例:(GetNums "-12.34m A-1-23-45.6-b")<br/>返回:((1 6 T) (11 1 nil) (13 2 nil) (16 4 T))</p><p>说明:返回一个二维表,子表个数为字符串中数字串的个数,每个子表有三个元素,分别代表数字串在参数中开始位置、长度和有无小数点。<br/></p><p>;获取字符串中的多个数字的位置、长度和有无小数点<br/>&nbsp; (defun GetNums (str / i p n di iLen tList iCode)<br/>&nbsp;&nbsp;&nbsp; (setq i&nbsp;1<br/>&nbsp;&nbsp; p&nbsp;0<br/>&nbsp;&nbsp; n&nbsp;0<br/>&nbsp;&nbsp; di&nbsp;0 ;计录有无小数点<br/>&nbsp;&nbsp; iLen&nbsp;(strlen str)<br/>&nbsp;&nbsp; tList&nbsp;'()<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (repeat iLen<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq iCode (ascii (substr str i 1)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (cond ((and (= i 1) (or (= iCode 43) (= iCode 45)))<br/>&nbsp; ;首部的正(负)号+/-<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq iCode (ascii (substr str 2 1)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (and (&gt;= iCode 48) (&lt;= iCode 57))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq p 1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n 1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; ((and (&gt;= iCode 48) (&lt;= iCode 57)) ;数字0-9<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (= p 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq p i)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq n (1+ n))<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; ((and (&gt; p 0) (= iCode 46) (= di 0)) ;数字后的小数点<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq iCode (ascii (substr str (1+ i) 1)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (and (&gt;= iCode 48) (&lt;= iCode 57))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq n&nbsp;(1+ n)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; di&nbsp;1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq tList (cons (list p n (= di 1)) tList)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p&nbsp;&nbsp;&nbsp; 0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n&nbsp;&nbsp;&nbsp; 0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; di&nbsp;&nbsp;&nbsp; 0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; ((&gt; p 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq tList (cons (list p n (= di 1)) tList)<br/>&nbsp;&nbsp;&nbsp;&nbsp; p&nbsp; 0<br/>&nbsp;&nbsp;&nbsp;&nbsp; n&nbsp; 0<br/>&nbsp;&nbsp;&nbsp;&nbsp; di&nbsp; 0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; (T nil)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq i (1+ i))<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (if&nbsp;(&gt; p 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq tList (cons (list p n (= di 1)) tList))<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (reverse tList)<br/>&nbsp; )</p>

clh521 发表于 2009-8-29 17:26:00

12.34只有5位。你的程序为什么是6呢

tengte 发表于 2009-8-29 19:26:00

<p>前面有个负号</p><p>首位的+或-会被当成正负号。</p>

navsun 发表于 2009-8-29 21:11:00

<p><font face="Verdana" color="#61b713"><strong>tengte</strong></font></p><p><font face="Verdana" color="#61b713"><font color="#000000">例</font></font><font face="Verdana" color="#61b713"><font color="#000000">:(GetNums "-12.34m A-1-23-45.6-b")<br/>返回:((1 6 T) (11 1 nil) (13 2 nil) (16 4 T))</font></font></p><p><font face="Verdana">你的程序有问题吧,第一个考虑负号了,为啥第二个和第三个不考虑?</font></p>

liminnet 发表于 2009-8-29 21:18:00

页: [1] 2
查看完整版本: [求助]如何提取比如“"P1-60"”中的60和“P1-”