jeike456 发表于 2010-11-9 13:42:00

[求助]表的处理

<p>请教大家,我要怎样才能从这个表</p>
<p><font face="Verdana"><font face="Verdana">'((DWGNO "MOLD1") </font></font></p>
<p><font face="Verdana"><font face="Verdana"></font></font>&nbsp;</p>
<p><font face="Verdana"><font face="Verdana">(3HRC "HRC 60-62") </font></font></p>
<p><font face="Verdana"><font face="Verdana">(3MAT "SKD11") </font></font></p>
<p><font face="Verdana"><font face="Verdana">(3THICK 40) </font></font></p>
<p><font face="Verdana"><font face="Verdana"></font></font>&nbsp;</p>
<p><font face="Verdana"><font face="Verdana">(2HRC "HRC 56-58") </font></font></p>
<p><font face="Verdana"><font face="Verdana">(2MAT "Cr12") </font></font></p>
<p><font face="Verdana"><font face="Verdana">(2THICK 30) </font></font></p>
<p><font face="Verdana"><font face="Verdana"></font></font>&nbsp;</p>
<p><font face="Verdana"><font face="Verdana">(1HRC "/") </font></font></p>
<p><font face="Verdana"><font face="Verdana">(1MAT "45#") </font></font></p>
<p><font face="Verdana"><font face="Verdana">(1THICK 20) </font></font></p>
<p><font face="Verdana"><font face="Verdana"></font></font>&nbsp;</p>
<p><font face="Verdana"><font face="Verdana">(MBNUMBER 3) </font></font></p>
<p><font face="Verdana"><font face="Verdana"></font></font>&nbsp;</p>
<p><font face="Verdana"><font face="Verdana">(MBLIST "3#2#1#")</font></font></p>
<p><font face="Verdana"><font face="Verdana"></font></font>&nbsp;</p>
<p><font face="Verdana"><font face="Verdana">)</font></font></p>
<p>&nbsp;</p>
<p><font face="Verdana">拆分得到下面的表呢</font></p>
<p><font face="Verdana">(setq mb_list&nbsp;&nbsp;&nbsp;'("1"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "2"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;"3") )</font></p>
<p><font face="Verdana">(setq thick_list '( 20&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 40))</font></p>
<p><font face="Verdana">(setq mat_list&nbsp; '(&nbsp;"45#"&nbsp;&nbsp; "Cr12"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "SKD11"&nbsp;))</font></p>
<p>(setq hrc_list&nbsp;&nbsp; '("/"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "HRC 56-58"&nbsp;&nbsp;&nbsp;&nbsp; "HRC 60-62))</p>
<p><font face="Verdana">&nbsp;</p></font>

xshrimp 发表于 2010-11-9 16:03:00

本帖最后由 作者 于 2010-11-9 16:30:34 编辑


(setq lst '((DWGNO "MOLD1")
(3HRC "HRC 60-62") (3MAT "SKD11") (3THICK 40) (2HRC "HRC 56-58")(2MAT "Cr12")
(2THICK 30) (1HRC "/")   (1MAT "45#")(1THICK 20) (MBNUMBER 3) (MBLIST "3#2#1#")
      )
)
(mapcar '(lambda(x)(cadr (assoc x lst))) '(1THICK 2THICK 3THICK))
(mapcar '(lambda(x)(cadr (assoc x lst))) '(1MAT 2MAT 3MAT) )
(mapcar '(lambda(x)(cadr (assoc x lst))) '(1HRC 2HRC 3HRC ) )
(setq txt (cadr (assoc 'MBLIST lst)))
(while (vl-string-search "#" txt )
(setq txt (vl-string-subst "\" \"" "#" txt))
)
(setq txt (read (strcat "(\""   txt "\")")))

下面的自己处理吧.

jeike456 发表于 2010-11-9 16:33:00

<p>谢谢,真利害,再次请教,要是这一句(mapcar '(lambda(x)(cadr (assoc x lst))) '(1MAT 2MAT 3MAT) )里面的'(1MAT 2MAT 3MAT) 改成lst的第几项的cadr如'(第8项 第5项 第2项)要怎么写呢,因为我里面的'(1MAT 2MAT 3MAT)是变量</p>

xshrimp 发表于 2010-11-9 16:44:00

<p><font face="Courier New" size="4">自己看看mapcar 的语法.</font></p>
<p><font face="Courier New" size="4">(mapcar '(lambda(x)(cadr (nth x lst))) '(8 5 2))</font></p>

jeike456 发表于 2010-11-10 09:25:00

<p>好的,谢谢xshrimp</p>
页: [1]
查看完整版本: [求助]表的处理