如何用空格解析Ada中的字符串

如何用空格解析Ada中的字符串,ada,gnat,Ada,Gnat,我正在使用Get\u Line从用户处获取输入, 字符串可以是一个命令后跟一个值(命令---一个或多个空格---值--新行),如 如何解析单个变量中的命令和值 到目前为止,我可以将字符串解析为在空格之前,但在空格之后,如何获取值并将其转换为整数 for I in ip'Range loop if ip(I) = ' ' or ip(I) = HT then Put_Line(CMD); Put

我正在使用
Get\u Line
从用户处获取输入, 字符串可以是一个命令后跟一个值(命令---一个或多个空格---值--新行),如

如何解析单个变量中的命令和值

到目前为止,我可以将字符串解析为在空格之前,但在空格之后,如何获取值并将其转换为整数

        for I in ip'Range loop
            if ip(I) = ' ' or ip(I) = HT then
                Put_Line(CMD);
                Put_Line(Integer'Image(Index));
            else
                CMD(I) := ip(I);
                Index := Index+1;
            end if;
        end loop;
--


谢谢

提示:研究正则表达式。@NWS——虽然正则表达式可以解决这个特殊的问题,但出于良心,我不能推荐它。作为一名维护程序员,RegEx是一个持续的痛苦来源:太过脆弱,并且经常在不合适的时候使用(例如“解析”CSV)。@Shark8关于RegEx的缺点的优点,但是我们对于它在OPs问题上的实际适用性几乎没有什么可说的。
        for I in ip'Range loop
            if ip(I) = ' ' or ip(I) = HT then
                Put_Line(CMD);
                Put_Line(Integer'Image(Index));
            else
                CMD(I) := ip(I);
                Index := Index+1;
            end if;
        end loop;
with Ada.Text_IO;

procedure Simple_Command_Parser_1 is
   type Commands is (CMD);
   type Values is range 4 .. 10;

   package Command_Text_IO is new Ada.Text_IO.Enumeration_IO (Commands);
   package Value_Text_IO   is new Ada.Text_IO.Integer_IO     (Values);

   Command : Commands;
   Value   : Values;
begin
   loop
      Command_Text_IO.Get (Command);
      Value_Text_IO.Get   (Value);
      Ada.Text_IO.Skip_Line;
   end loop;
end Simple_Command_Parser_1;