今回はセクションタグの列挙についてです。
以下のようなテキストがあったとします。
[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関数に関しては
指定した文字列で文字列分割
をご覧ください。