无痕 发表于 2008-2-19 14:27:00

4.7;; 更改字符中包含 M=数字 的字符,将数字加1.5<br/>(defun c:test1()<br/>(setq str "2至M=56.5变M=3量M=.22"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pat "(M)(=)(<a href="file://\\d{0,}\\.{0,1}\\d{1">\\d{0,}\\.{0,1}\\d{1</a>,})")<br/>(setq lst (xxexp pat str "")) ;-&gt;("M=56.5" "M=3" "M=.22")<br/>(setq lst2(mapcar '(lambda(x)(strcat "M=" (rtos(+ 1.5(distof(vl-string-subst "" "M=" x)))2 2)))lst))<br/>&nbsp;;-&gt;("M=58.00" "M=4.50" "M=1.72")<br/>(mapcar '(lambda(x y)(setq str (xxexpr x str y ""))) lst lst2)<br/>str) ;-&gt; "2至M=58.00变M=4.50量M=1.72" <br/>4.8 ;; 将a=或d=开头的数字加一个数.<br/>(defun c:test2()<br/>&nbsp;&nbsp; (setq str "测试a=2,d=3结果f=2,aa-3"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; add 1.75<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jd 2) ;精度<br/>&nbsp;&nbsp; (setq str2 (xxexpr "()(=)(<a href="file://\\d">\\d</a>+)" str (strcat"$1$2(+ " (rtos add 2 jd) " $3)") "")) ;-&gt; "测试a=(+ 1.75 2),d=(+ 1.75 3)结果f=2,aa-3"<br/>&nbsp;&nbsp; (setq as (mapcar '(lambda(x)(eval(read x))) (xxexp "(<a href="file://\\([^()]*\\">\\([^()]*\\</a>))" str2&nbsp; "")));-&gt;("(+ 1.75 2)" "(+ 1.75 3)")-&gt;(3.75 4.75)<br/>&nbsp;&nbsp; (mapcar '(lambda(x)(setq str2 (xxexpr "()(=)(<a href="file://\\([^()]*\\">\\([^()]*\\</a>))" str2 (strcat "$1$2" (rtos x 2 jd)) "g"))) as)<br/>&nbsp;&nbsp; str2<br/>) ;-&gt; "测试a=3.75,d=4.75结果f=2,aa-3" <br/>

zml84 发表于 2008-2-19 16:19:00

http://zml84.blog.sohu.com/79553255.html<br/><pre><font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys" color="#0000ff">vl-load-com</font><font face="Fixedsys" color="#ff0000">)</font><br/><font face="Fixedsys" color="#990099">;;;=============================================</font><br/><font face="Fixedsys" color="#990099">;;;功能:字符串分割                           </font><br/><font face="Fixedsys" color="#990099">;;;参数:STR ----欲分割的字符串,支持汉字       </font><br/><font face="Fixedsys" color="#990099">;;;      LST ----分隔符表,大小写敏感         </font><br/><font face="Fixedsys" color="#990099">;;;日期:zml84 于 2008-02-19                  </font><br/><font face="Fixedsys" color="#990099">;;;示例:(test "1N3.5(2)" '(("N")("(" ")")))    </font><br/><font face="Fixedsys" color="#990099">;;;       ===&gt;&gt;("1" "N" "3.5" "(2)")          </font><br/><font face="Fixedsys" color="#990099">;;;示例:(test "abc汉字2(1.5)" '(("汉""字")))   </font><br/><font face="Fixedsys" color="#990099">;;;       ===&gt;&gt;("abc" "汉字" "2(1.5)")      </font><br/><font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys" color="#0000ff">defun</font>
                <font face="Fixedsys">TEST</font>
                <font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys">STR</font>
                <font face="Fixedsys">LST</font>
                <font face="Fixedsys" color="#0000ff">/</font>
                <font face="Fixedsys">I</font>
                <font face="Fixedsys">LST2</font>
                <font face="Fixedsys">LST_TMP</font>
                <font face="Fixedsys">STRI</font>
                <font face="Fixedsys">STR_TMP</font><font face="Fixedsys" color="#ff0000">)</font><br/>
                <font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys" color="#0000ff">setq</font>
                <font face="Fixedsys">LST2</font>
                <font face="Fixedsys" color="#0000ff">'</font><font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys" color="#ff0000">)</font><font face="Fixedsys" color="#ff0000">)</font>
                <font face="Fixedsys" color="#990099">;_存放结果的变量</font><br/>
                <font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys" color="#0000ff">setq</font>
                <font face="Fixedsys">STR_TMP</font>
                <font face="Fixedsys" color="#ff00ff">""</font><font face="Fixedsys" color="#ff0000">)</font><br/>
                <font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys" color="#0000ff">while</font>
                <font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys" color="#0000ff">/=</font>
                <font face="Fixedsys">STR</font>
                <font face="Fixedsys" color="#ff00ff">""</font><font face="Fixedsys" color="#ff0000">)</font><br/>        <font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys" color="#0000ff">if</font>
                <font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys" color="#0000ff">&gt;</font>
                <font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys" color="#0000ff">ascii</font><font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys" color="#0000ff">substr</font>
                <font face="Fixedsys">STR</font>
                <font face="Fixedsys" color="#009900">1</font>
                <font face="Fixedsys" color="#009900">1</font><font face="Fixedsys" color="#ff0000">)</font><font face="Fixedsys" color="#ff0000">)</font>
                <font face="Fixedsys" color="#009900">159</font><font face="Fixedsys" color="#ff0000">)</font><br/>          <font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys" color="#0000ff">setq</font>
                <font face="Fixedsys">STRI</font>
                <font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys" color="#0000ff">substr</font>
                <font face="Fixedsys">STR</font>
                <font face="Fixedsys" color="#009900">1</font>
                <font face="Fixedsys" color="#009900">2</font><font face="Fixedsys" color="#ff0000">)</font><br/>                  <font face="Fixedsys">STR</font>
                <font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys" color="#0000ff">substr</font>
                <font face="Fixedsys">STR</font>
                <font face="Fixedsys" color="#009900">3</font><font face="Fixedsys" color="#ff0000">)</font><br/>          <font face="Fixedsys" color="#ff0000">)</font><br/>          <font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys" color="#0000ff">setq</font>
                <font face="Fixedsys">STRI</font>
                <font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys" color="#0000ff">substr</font>
                <font face="Fixedsys">STR</font>
                <font face="Fixedsys" color="#009900">1</font>
                <font face="Fixedsys" color="#009900">1</font><font face="Fixedsys" color="#ff0000">)</font><br/>                  <font face="Fixedsys">STR</font>
                <font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys" color="#0000ff">substr</font>
                <font face="Fixedsys">STR</font>
                <font face="Fixedsys" color="#009900">2</font><font face="Fixedsys" color="#ff0000">)</font><br/>          <font face="Fixedsys" color="#ff0000">)</font><br/>        <font face="Fixedsys" color="#ff0000">)</font><br/>        <font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys" color="#0000ff">if</font>
                <font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys" color="#0000ff">setq</font>
                <font face="Fixedsys">LST_TMP</font>
                <font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys" color="#0000ff">assoc</font>
                <font face="Fixedsys">STRI</font>
                <font face="Fixedsys">LST</font><font face="Fixedsys" color="#ff0000">)</font><font face="Fixedsys" color="#ff0000">)</font><br/>          <font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys" color="#0000ff">progn</font><br/>                <font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys" color="#0000ff">if</font>
                <font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys" color="#0000ff">/=</font>
                <font face="Fixedsys">STR_TMP</font>
                <font face="Fixedsys" color="#ff00ff">""</font><font face="Fixedsys" color="#ff0000">)</font><br/>                  <font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys" color="#0000ff">setq</font>
                <font face="Fixedsys">LST2</font>          <font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys" color="#0000ff">cons</font>
                <font face="Fixedsys">STR_TMP</font>
                <font face="Fixedsys">LST2</font><font face="Fixedsys" color="#ff0000">)</font><br/>                          <font face="Fixedsys">STR_TMP</font>
                <font face="Fixedsys" color="#ff00ff">""</font><br/>                  <font face="Fixedsys" color="#ff0000">)</font><br/>                <font face="Fixedsys" color="#ff0000">)</font><br/>                <font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys" color="#0000ff">cond</font><br/>                  <font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys" color="#0000ff">=</font>
                <font face="Fixedsys" color="#009900">1</font>
                <font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys">length</font>
                <font face="Fixedsys">LST_TMP</font><font face="Fixedsys" color="#ff0000">)</font><font face="Fixedsys" color="#ff0000">)</font><br/>                     <font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys" color="#0000ff">setq</font>
                <font face="Fixedsys">LST2</font>
                <font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys" color="#0000ff">cons</font>
                <font face="Fixedsys">STRI</font>
                <font face="Fixedsys">LST2</font><font face="Fixedsys" color="#ff0000">)</font><font face="Fixedsys" color="#ff0000">)</font>                     <br/>                  <font face="Fixedsys" color="#ff0000">)</font><br/>                  <font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys" color="#0000ff">=</font>
                <font face="Fixedsys" color="#009900">2</font>
                <font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys">length</font>
                <font face="Fixedsys">LST_TMP</font><font face="Fixedsys" color="#ff0000">)</font><font face="Fixedsys" color="#ff0000">)</font><br/>                     <font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys" color="#0000ff">if</font>
                <font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys" color="#0000ff">setq</font>
                <font face="Fixedsys">I</font>
                <font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys" color="#0000ff">vl-string-search</font>
                <font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys" color="#0000ff">cadr</font>
                <font face="Fixedsys">LST_TMP</font><font face="Fixedsys" color="#ff0000">)</font>
                <font face="Fixedsys">STR</font><font face="Fixedsys" color="#ff0000">)</font><font face="Fixedsys" color="#ff0000">)</font><br/>                       <font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys" color="#0000ff">setq</font>
                <font face="Fixedsys">LST2</font>
                <font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys" color="#0000ff">cons</font><br/>                                        <font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys" color="#0000ff">strcat</font>
                <font face="Fixedsys">STRI</font><font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys" color="#0000ff">substr</font>
                <font face="Fixedsys">STR</font>
                <font face="Fixedsys" color="#009900">1</font>
                <font face="Fixedsys">I</font><font face="Fixedsys" color="#ff0000">)</font>
                <font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys" color="#0000ff">cadr</font>
                <font face="Fixedsys">LST_TMP</font><font face="Fixedsys" color="#ff0000">)</font><font face="Fixedsys" color="#ff0000">)</font><br/>                                        <font face="Fixedsys">LST2</font><br/>                                  <font face="Fixedsys" color="#ff0000">)</font><br/>                             <font face="Fixedsys">STR</font>
                <font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys" color="#0000ff">substr</font>
                <font face="Fixedsys">STR</font>
                <font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys" color="#0000ff">+</font>
                <font face="Fixedsys" color="#009900">1</font>
                <font face="Fixedsys">I</font>
                <font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys" color="#0000ff">strlen</font>
                <font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys" color="#0000ff">cadr</font>
                <font face="Fixedsys">LST_TMP</font><font face="Fixedsys" color="#ff0000">)</font><font face="Fixedsys" color="#ff0000">)</font><font face="Fixedsys" color="#ff0000">)</font><font face="Fixedsys" color="#ff0000">)</font><br/>                       <font face="Fixedsys" color="#ff0000">)</font><br/>                       <font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys" color="#0000ff">setq</font>
                <font face="Fixedsys">LST2</font>
                <font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys" color="#0000ff">cons</font>
                <font face="Fixedsys">STR</font>
                <font face="Fixedsys">LST2</font><font face="Fixedsys" color="#ff0000">)</font><br/>                             <font face="Fixedsys">STR</font>
                <font face="Fixedsys" color="#ff00ff">""</font><br/>                       <font face="Fixedsys" color="#ff0000">)</font><br/>                     <font face="Fixedsys" color="#ff0000">)</font><br/>                  <font face="Fixedsys" color="#ff0000">)</font><br/>                <font face="Fixedsys" color="#ff0000">)</font><br/>          <font face="Fixedsys" color="#ff0000">)</font><br/>          <font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys" color="#0000ff">setq</font>
                <font face="Fixedsys">STR_TMP</font>
                <font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys" color="#0000ff">strcat</font>
                <font face="Fixedsys">STR_TMP</font>
                <font face="Fixedsys">STRI</font><font face="Fixedsys" color="#ff0000">)</font>
                <font face="Fixedsys" color="#ff0000">)</font><br/>        <font face="Fixedsys" color="#ff0000">)</font><br/>
                <font face="Fixedsys" color="#ff0000">)</font><br/>
                <font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys" color="#0000ff">if</font>        <font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys" color="#0000ff">/=</font>
                <font face="Fixedsys">STR_TMP</font>
                <font face="Fixedsys" color="#ff00ff">""</font><font face="Fixedsys" color="#ff0000">)</font><br/>        <font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys" color="#0000ff">setq</font>
                <font face="Fixedsys">LST2</font>
                <font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys" color="#0000ff">cons</font>
                <font face="Fixedsys">STR_TMP</font>
                <font face="Fixedsys">LST2</font><font face="Fixedsys" color="#ff0000">)</font><font face="Fixedsys" color="#ff0000">)</font><br/>
                <font face="Fixedsys" color="#ff0000">)</font><br/>
                <font face="Fixedsys" color="#ff0000">(</font><font face="Fixedsys" color="#0000ff">reverse</font>
                <font face="Fixedsys">LST2</font><font face="Fixedsys" color="#ff0000">)</font><br/><font face="Fixedsys" color="#ff0000">)</font>
</pre><br/>

无痕 发表于 2008-2-19 22:26:00

jaminth发表于2008-2-18 22:24:00static/image/common/back.gif无痕斑主,能不能用正则表达式帮一下忙:我给出三种情况:----------------分离结果:(setq all \"125.36(T5)\")--------(setq sz \"125.36\");(setq wz \"(T5)\")(setq all \"585.360052\")--


;|实例:
(setq pat "(.?T\\d+.?)|(\\d+\\.?\\d+)")
(xxexp pat "125.36(T5)")
->返回:("125.36" "(T5)")
(xxexp pat "585.360052")
->返回:("" "585.360052")
(xxexp pat "{T8}125.36<T5>")
->返回:("{T8}" "125.36" "<T5>")
|; ;|正则表达式分断字符串---by lxx|;
(defun xxexp (pat str / end)
(vl-load-com)
(setq *xxvbsexp (vlax-get-or-create-object "VBScript.RegExp"))
(vlax-put *xxvbsexp 'Pattern pat)
(vlax-put *xxvbsexp 'Global -1)
(setq matches (vlax-invoke *xxvbsexp 'Execute str))
(vlax-for x matches (setq end (cons (vla-get-value x) end)))
(reverse end)
)
页: 1 [2]
查看完整版本: 再次求助怎么分离数字与符号?