0

我在互联网上花了一整天的时间,但我无法在 Win-Prolog 中找到任何内置谓词来区分字符串中的每个单词。

例子:

| ?- read(X).
|: 'this is a string'.
X = 'this is a string'.

有没有我可以使用的谓词来帮助我,挑出字符串中的每个单词?喜欢

A = this
B = is
C = a
D = string

或列表

A = [This, is, a, string]

可能吗?

4

1 回答 1

0

在 Win-Prolog 中,您可能会使用:

split_string(String, List):-
  string_chars(String, LChar),
  split_string(List, LWord-LWord, LChar, []).

split_string([Word|TailWords], LWord-[])--> 
     " ", 
     {string_chars(Word, LWord)}, 
     split_string(TailWords, NLWord-NLWord).
split_string(Words, Head-[Char|LWord]) --> 
     [Char], 
     {[Char] \= " "}, 
     split_string(Words, Head-LWord).
split_string([Word], LWord-[])--> 
     [], 
     { string_chars(Word, LWord)}.

在 SWI-Prolog 中,您可以使用atomic_list_concat(List, ' ', 'this is a string').

于 2014-08-29T16:45:36.133 回答