1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
unit UStringTokenizer;
interface
uses classes, Utype;
type
StringTokenizer = class
protected
liste : TList; // liste des mots séparés.
indexCourant : integer;
public
constructor create(st: string; car : char);
function hasMoreTokens():boolean;
function nextToken():string;
end;
implementation
constructor StringTokenizer.create(st: string; car : char);
var
i,j: integer;
mot :TTString;
chaine : String;
begin
liste := TList.create;
chaine := '';
for i:= 1 to length(st) do
begin
if (st[i] = car) and (chaine <>'') then
begin
mot := TTSTring.create;
mot.value := chaine;
liste.add(mot);
chaine :='';
end
else
chaine := chaine + st[i];
end;
// Le dernier mot
if (chaine<> '') then
begin
mot := TTSTring.create;
mot.value := chaine;
liste.add(mot);
chaine :='';
end;
indexCourant := 0;
end;
function StringTokenizer.hasMoreTokens():boolean;
begin
result := (indexCourant < liste.count);
end;
function StringTokenizer.nextToken():string;
begin
Result := TTString(liste.Items[indexCourant]).value;
inc(indexCourant);
end;
end. |