String Tokenizer Similar To strtok() in C++

Diposting oleh Source Code Program | 20.34 | | 0 komentar »

//Declare private string for the unit
implementation
var

TokS: string


//Function To Get Characters From The String function StrMid(const sData: string; nStart: integer; nLength: integer): string; overload;
begin

Result := copy(sData, nStart, nLength);

end;

//Function To Get Characters From The String function StrMid(const sData: string; nStart: integer): string; overload;
begin

Result := copy(sData, nStart, Length(sData) - (nStart - 1));

end;

//String Tokenizer function
function StrTok(S: string; Tok: string = ''): string;
var

i,
LenTok: integer;

begin

if not(S = '') then begin //New String

TokS := S;
result := '';
Exit;

end;

if Tok = '' then begin //If No Token

result := TokS;
Exit;

end;

LenTok := Length(Tok);
for i := 0 to Length(TokS) - LenTok do begin

if StrMid(TokS, i, LenTok) = Tok then begin //If Token Found

result := StrMid(TokS, 1, i - LenTok);
TokS := StrMid(TokS, i + LenTok + 1);
Exit;

end;

end;

//If Program Reaches Here, Return The Rest Of The String
result := TokS;
TokS := '';

end;


Therefore, for example, if you defined a string:
var

S: string


and set S to 'Hello World'

S := 'Hello World';


and then call StrTok() like so:

StrTok(S);

The procedure will store the string, from now on, calling StrTok() with no S value and a token (such as a space ' '), the program will return everything in the string up to the token.

EX:
var

firstWord,
secondWord: string


begin

StrTok(S);
firstWord := StrTok('', ' ');
secondWord := StrTok('', ' ');

end;

//Doing this will break apart the string S at the token (' ') into the first word and the second word.

0 komentar