2010-11-20 64 views
-1

我有一個需要處理和寫出的攪拌列表。 我用H | Tail遞歸獲得字符串。 h會看起來像 「聲明(FOO和Foo2,foo3,foo4,foo5)」 東西,我希望能夠寫出來只是富和Foo2,foo3在單獨的行在序言中操縱字符串

出:富
吧: foo2的
...
...
格:foo5

回答

1

字符串轉換爲代碼,代碼的一個術語,然後解構術語:

/* SWI Prolog 
*/ 
read_from_string(String, Term) :- 
    string_to_list(String, List), 
    read_from_chars(List, Term). 

demo:- 
    String="statement(foo, foo2, foo3,foo4,foo5)", 
    read_from_string(String, Term), 
    Term =.. [Fst,Snd,Thr|Rest], 
    write(functor:Fst),nl, 
    write(arg1:Snd),nl, 
    write(arg2:Thr),nl, 
    write(rest:Rest),nl. 

演示會話:

?- demo. 
functor:statement 
arg1:foo 
arg2:foo2 
rest:[foo3,foo4,foo5] 
true. 

選擇項目根據起因於大學(= ..)列表中各自的崗位上打印。在這裏他們都是印刷的。

+0

偉大正是我需要的 – user514706 2010-11-20 23:55:48