[求助]字符串指定位置增加字符
谁能帮忙写个小程序,框选图中所有单行文字,搜索出含有分号的单行文字,并在其第一个位置加上字符B,在第四个位置加上字符T,多谢。<font face="Verdana">例如:“356;256”,运行程序后变成“B356;T256”</font>;字串加字符 明经 ZZXXQQ 2010.6.8
(defun c:tt ()
(if (and (princ "\n选择文本 :") (setq ss (ssget '((0 . "TEXT") (1 . "*;*"))))) (progn
(setq n 0)
(repeat (sslength ss)
(setq ent (entget(ssname ss n))
n (1+ n)
txt (cdr(assoc 1 ent))
txt (strcat "B" (substr txt 1 4) "T" (subst txt 5))
ent (subst (cons 1 txt) (assoc 1 ent) ent))
(entmod ent)
)
))
(princ)
)
<font face="Verdana">ads_name ssName;<br/> struct resbuf *pRb;<br/> pRb=acutBuildList(0,"TEXT",NULL);<br/> if (acedSSGet(NULL,NULL,NULL,pRb,ssName)!=RTNORM)<br/> {<br/> acutRelRb(pRb);<br/> return;<br/> }<br/> acutRelRb(pRb);<br/> long ssLength;<br/> ads_name eName;<br/> acedSSLength(ssName,&ssLength);<br/> AcDbObjectId ObjID;<br/> AcDbEntity *pEnt=NULL;<br/> AcDbText *pTxt=NULL;<br/> CString strTxt;<br/> for (long i=0;i<ssLength;i++)<br/> {<br/> acedSSName(ssName,i,eName);<br/> acdbGetObjectId(ObjID,eName);<br/> acdbOpenAcDbEntity(pEnt,ObjID,AcDb::kForRead);<br/> pTxt=AcDbText::cast(pEnt);<br/> if (pTxt==NULL)<br/> {<br/> pEnt->close();<br/> continue;<br/> }<br/> strTxt.Format(_T("%s"),pTxt->textString());<br/> if (strTxt.Find(_T(";"))>=0 || strTxt.Find(_T(";"))>=0)<br/> {<br/> if (strTxt.GetAt(0)!='B' && strTxt.GetAt(6)!='T')<br/> {<br/> strTxt.Insert(0,'B');<br/> strTxt.Insert(5,'T');<br/> pTxt->upgradeOpen();<br/> pTxt->setTextString(strTxt);<br/> }<br/> }<br/> pTxt->close();<br/> pTxt=NULL;<br/> pEnt=NULL;<br/> }<br/> acedSSFree(ssName);</font> 好,多谢了,哈哈,还是论坛好,不会被被骂俺太懒。 <p>另外怎样将2d25+(2d12)改为4d25?还请不吝赐教。</p> 也就是用字符串的第一个数字加上左括号后面的第一个数字作为新字符串的第一个数字,加号及后面的都删掉 同时可以吧"2d25+(2d12);2d25"改为"4d25;2d25" <p>也就是说不能删除分号后面的文字</p>
页:
[1]