Delphi Tips 
-----------------------------

0022  D1   D2   D3   D4   D5   D6   D7   3.1   95   98    作成: 1999/02/08 osamu rev 1.1
   B1   B3   B4   B5   B6   B7   NT3   NT4   2K   XP  更新: 1999/02/08 osamu 編集
文字列の切り分け

 >> 以下のような文字列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です。
参照: [Delphi-ML:12110] <文字列> <PASCAL>

[新規作成] [最新の情報に更新]

How To
Lounge
KeyWords


Tips
Delphi
Home
Osamu Takeuchi osamu@big.or.jp