文字列の切り分け
|
>> 以下のような文字列dumStringにおいて、その中に含まれている引数term3だけを得たい。
>>
>> dumString := 'program term1 term2 term3 term4 term5';
GetTokenIndex(dumString,' ',4)でterm3を返します。
{---------------------------------------------------------------------}
function RemoveToken(var s:string;delimiter:string):string;
var p:Integer;
begin
p:=Pos(delimiter,s);
if p=0 then Result:=s
else Result:=Copy(s,1,p-1);
s:=Copy(s,Length(Result)+Length(delimiter)+1,Length(s));
end;
{---------------------------------------------------------------------}
function GetTokenIndex(s:string;delimiter:string;index:Integer):string;
var i:Integer;
begin
Result:='';
for i:=0 to index do
Result:=RemoveToken(s,delimiter);
end;
{---------------------------------------------------------------------}
RemoveTokenはsをdelimiterで切り分けたときの一番始めの部分を返し、sから取り除きます。sにdelimiterが含まれないときにはs全体を返し、sは空文字列になります。
GetTokenIndexは、sをdelimiterで切り分けたときのindex番目の部分を返します。一番始めの部分はindex=0です。sは変更されません。
indexが範囲外の場合には空文字列が返ります。
delimiterはstring型になっているので、#13#10や' : 'などで切り分けるのもOKです。
|
|