我正在尝试获取字符串的前N个字符。通过查看以下问题,我了解到我可以使用
> sub_atom(str, X, Y, W, Z).
Getting last char of a string in Prolog
问题是我找不到这个函数的好文档,这里是正式文档: http://www.swi-prolog.org/pldoc/man?predicate=sub_atom/5
我很乐意找到关于这个功能如何工作的链接或解释。另外,我将很乐意为以下示例提供帮助: 如何获得“prolog / a”中“/”之前的所有字符,这些字符的工作方式如下:
sub_atom(prolog / a,X,Y,W,Z)。 =>序言
答案 0 :(得分:3)
我认为文档很清楚:
sub_atom(+Atom, ?Before, ?Len, ?After, ?Sub)
sub_atom(abc, 1, 1, After, b).
给出After = 1
(剩余的是长度为1的c)在您的示例中,问题是prolog/r
不是原子而是复合词,因为它包含'/'
。虽然"prolog/r"
(用双引号作为字符串)是一个原子。
我建议使用atomic_list _concat/3
来实现
?- atomic_list_concat(L, '/', "prolog/r").
L = [prolog, r].