如何用空格解析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;