Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 阅读字符串并在Win Prolog中挑出字符串中的每个单词_String_List_Prolog_Sentence_Win Prolog - Fatal编程技术网

String 阅读字符串并在Win Prolog中挑出字符串中的每个单词

String 阅读字符串并在Win Prolog中挑出字符串中的每个单词,string,list,prolog,sentence,win-prolog,String,List,Prolog,Sentence,Win Prolog,我花了一整天的时间在互联网上,但在Win Prolog中找不到任何可以挑出字符串中每个单词的内置谓词 例如: | ?- read(X). |: 'this is a string'. X = 'this is a string'. 是否有任何谓词可以帮助我挑出字符串中的每个单词? 像 或者一份清单 A = [This, is, a, string] 可能吗 在Win序言中,您可以使用: split_string(String, List):- string_chars(String, L

我花了一整天的时间在互联网上,但在Win Prolog中找不到任何可以挑出字符串中每个单词的内置谓词

例如:

| ?- read(X).
|: 'this is a string'.
X = 'this is a string'.
是否有任何谓词可以帮助我挑出字符串中的每个单词? 像

或者一份清单

A = [This, is, a, string]

可能吗

在Win序言中,您可以使用:

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中,您可以使用原子列表(列表,,“这是一个字符串”)。

表示什么?>表示您正在编写一个。
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)}.