セクションタグの列挙

今回はセクションタグの列挙についてです。

以下のようなテキストがあったとします。

[TagA TagB]
ContentsA
[/TagA TagB]

[TagA TagC]
ContentsB
[/TagA TagC]

この場合に、TagA TagB TagCを抜き出す。
といった関数です。

ソースです。

function GetTagList(Src:string):string;
var s,t:string;
begin
 Result:='';

 while Src<>'' do begin
  s:=NP_Trim(NP_CutFirst(Src,_CRLF));

  if s='' then continue;
  if Pos('[',s)<>1 then continue;

  NP_CutFirst(s,'[');
  s:=NP_Trim(NP_CutFirst(s,']'));
  if Pos('/',s)=1 then continue;

  while s<>'' do begin
   t:=NP_Trim(NP_CutFirst(s,_SP));
   if t='' then continue;

   if not IsExists(t,Result) then Result:=Result+t+_CRLF;
  end;

 end;

end;

先ほどのテキストを引数SrcにセットしてGetTagListを呼ぶと、
TagA TagB TagCが改行文字で区切られて戻ってきます。

_CRLFは改行文字です。

NP_Trimはトリム関数です。両端のホワイトスペースを除去します。

IsExists関数に関しては
TStringsの IndexOf(s)<>-1 的なヤツを文字列でやってみる
をご覧ください。

NP_CutFirst関数に関しては
指定した文字列で文字列分割
をご覧ください。

シェアする

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

フォローする