Hatena::Groupcadr

わだばLisperになる このページをアンテナに追加 RSSフィード

2004 | 12 |
2005 | 01 | 02 | 07 | 10 | 11 |
2006 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 11 |

2010-10-22

KMRCLを眺める(220) FIND-END-TAG

| 18:46 | KMRCLを眺める(220) FIND-END-TAG - わだばLisperになる を含むブックマーク はてなブックマーク - KMRCLを眺める(220) FIND-END-TAG - わだばLisperになる

今回はKMRCLのxml-utils.lispから、FIND-END-TAGです。

動作は、

(kmrcl::find-end-tag "foo" 3 "<foo>hello</foo>" 5 16)
;⇒ 10

という感じで前回のFIND-START-TAGの対で終了タグの開始位置を返すものです。

定義は、

(defun find-end-tag (tag taglen xmlstr start end)
  (fast-string-search
   (concatenate 'string "</" tag ">") xmlstr
   (+ taglen 3) start end))

というところ。

簡単に標準の関数で書けば、

(defun find-end-tag (tag taglen xmlstr start end)
  (declare (ignore taglen))
  (search (concatenate 'string "</" tag ">")
          xmlstr
          :start2 start :end2 end ))

というところでしょうか。

ゲスト



トラックバック - http://cadr.g.hatena.ne.jp/g000001/20101022