タグによるセクションの除去

セクションタグの列挙の続きです。

まずはソースから。

function EliminateTags(Src,TagList:string):string;
var s,t,CloseTag:string;
begin
 Result:='';

 while src<>'' do begin
  s:=NP_Trim(NP_CutFirst(Src,_CRLF));
  if s='' then begin
   Result:=Result+_CRLF;
   continue;
  end;

  //ここら辺をちょっと関数化できたらいいかなと
  if Pos('[',s)=1 then begin

   //タグ大かっこを除去&タグ取得
   NP_CutFirst(s,'[');
   CloseTag:=NP_CutFirst(s,']');
   s:=CloseTag;

   while s<>'' do begin
    //閉じタグならBreak
    if Pos('/',NP_Trim(s))=1 then break;

    t:=NP_Trim(NP_CutFirst(s,_SP));
    if t='' then continue;

    //設定タグリストにあるタグかチェック
    if IsExists(t,TagList) then break;

    //タグリストにないなら閉じタグまでクリア
    if s='' then begin
     NP_CutFirst(Src,'[/'+CloseTag+']');
     break;
    end;

   end;

  end else Result:=Result+s+_CRLF;

 end;

end;

 
これは以下のようなテキスト(Src)があった時に、
引数のタグリスト(TagList)にタグTagBを指定して呼び出すと、
ContentsA
を取得して戻る。

という関数です。

[TagA TagB]
ContentsA
[/TagA TagB]

[TagA TagC]
ContentsB
[/TagA TagC]

タグリストは文字通り複数のタグを指定できます。
その際は改行文字で区切ります。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする