2014-10-20 58 views
-2

我需要从这样的文件,输入:阅读文件中ADA

比方说,文件名是TEST.DAT其是这样的:

keyword1 123456a 
keyword2 small hard sour 
keyword2 midsize firm bland 
keyword2 large hard sour 
    keyword1 

     2234567 
keyword1 3234567 
keyword1 4234567 
    keyword2 
     small 
     soft 
     sour 
keyword1 123456a 
    keyword2 midsize hard bland 
keyword1 123456A 
    keyword2 large firm sweet 
keyword1 AAAAAAA 
    keyword2 midsize hard bland 
keyword1 BBBBBBA 
    keyword2 large firm sweet 

我需要检测关键字1并阅读下一个七个字符的字符串,然后我需要检测关键字2并阅读下面三个字符串等等。正如你所看到的,文件中任何字符串前后都可以有任意数量的空白。

我是ada的新手。请帮忙。

+0

你想要什么样的帮助?到目前为止你尝试了什么,你卡在哪里? – 2014-10-20 20:20:02

+0

我想过逐行阅读,然后使用空格分隔符标记字符串,但两个字符串之间可以有任意数量的空格。 – nole 2014-10-20 20:26:22

+0

合理的开始。在'Ada.Strings'中有函数,比如'Index',你可以使用它来查找模式索引(或非空格字符)等。 – 2014-10-20 20:35:11

回答

1

看看GNAT.AWK。它可能是自动执行此分析的最简单方法之一。例如:

procedure On_Keyword1 is 
begin 
    Put_Line ("Field1 = " & GNAT.AWK.Field (2)); 
end On_Keyword1; 

procedure On_Keyword2 is 
begin 
    Put_Line ("Word1=" & GNAT.AWK.Field (2) 
      & " Word2=" & GNAT.AWK.Field (3) 
      & " Word3=" & GNAT.AWK.Field (4)); 
end On_Keyword2; 

GNAT.AWK.Register (1, "Keyword1", On_Keyword1'Access); 
GNAT.AWK.Register (1, "Keyword2", On_Keyword2'Access);