我试图理解用户如何输入一个句子然后将Prolog分成单独的单词。 例如, 用户输入这句话:“计算机由硬件组成” 我想将这句话分为:“计算机”,“包含”,“由”和“硬件”
有人可以解释用户如何输入句子然后将其拆分为Prolog吗?
答案 0 :(得分:1)
如果句子包含在列表中(即[计算机,包含,硬件]),那么您可以使用:
SELECT mnthyears FROM dates
ORDER BY str_to_date(replace(replace('(Jan 2016)',')',''),'(',''),'%b %Y') DESC
例如:
split(L,Result) :-
splitacc(L, [], Result).
splitacc([], Acc, Result) :-
Result=Acc.
splitacc([H|T], Acc, Result) :-
append(Acc, [[H]], NewAcc),
splitacc(T, NewAcc, Result).
答案 1 :(得分:0)
Swi-Prolog具有内置谓词,这使这相当容易:
?- split_string("computer consists of hardware", "\s", "\s", L).
L = ["computer", "consists", "of", "hardware"].
据我了解,split_string(+String, +SepChars, +PadChars, -SubStrings)
中的第三个参数+ PadChars会修剪周围的空间。
例如,在此示例中,将+ PadChars设置为空字符串,添加前导和尾随空格会产生:
?- split_string(" computer consists of hardware ", "\s", "", L).
L = ["", "computer", "consists", "of", "hardware", ""].
将PadChars设置为“ \ s”会产生:
?- split_string(" computer consists of hardware ", "\s", "\s", L).
L = ["computer", "consists", "of", "hardware"].
但是我不确定+ PadChars是否有其他用途。有人知道有什么好的例子可以澄清吗?