Tokenize a string: Difference between revisions

Content added Content deleted
No edit summary
(Improved Ada example)
Line 144: Line 144:
=={{header|Ada}}==
=={{header|Ada}}==
<lang ada>
<lang ada>
with Ada.Text_IO, Ada.Containers.Indefinite_Vectors;
with Ada.Text_IO, Ada.Containers.Indefinite_Vectors, Ada.Strings.Fixed, Ada.Strings.Maps;
use Ada.Text_IO, Ada.Containers;
use Ada.Text_IO, Ada.Containers, Ada.Strings, Ada.Strings.Fixed, Ada.Strings.Maps;

procedure tokenize is
procedure Tokenize is
package String_Vector is new Indefinite_Vectors (Natural,String); use String_Vector;
package String_Vectors is new Indefinite_Vectors (Positive, String);
use String_Vectors;
s : String := "Hello,How,Are,You,Today" & ",";
Input : String := "Hello,How,Are,You,Today";
current : Positive := s'First;
v : Vector;
Start : Positive := Input'First;
Finish : Natural := 0;
Output : Vector := Empty_Vector;
begin
begin
for i in s'range loop
while Start <= Input'Last loop
if s (i) = ',' or i = s'last then
Find_Token (Input, To_Set (','), Start, Outside, Start, Finish);
v.append (s (current .. i-1));
exit when Start > Finish;
current := i + 1;
Output.Append (Input (Start .. Finish));
end if;
Start := Finish + 1;
end loop;
end loop;
for s of v loop put(s & "."); end loop;
for S of Output loop
Put (S & ".");
end tokenize;
end loop;
end Tokenize;
</lang>
</lang>