如何操作prolog中的字符串?

时间:2010-12-08 19:26:42

标签: string prolog

我在我的基地有这个事实 事实("名称""姓"" 123&#34)。 如果我只是写这个问题: 事实(X,_,_)。对于X,我得到一些不明的输出。 如何检索任何此值,或如何获得此输出? ?词汇讲解:awareness(X,_,_)。 输出:名称。

非常感谢。

3 个答案:

答案 0 :(得分:3)

在SWI-Prolog中,您可以使用string_to_atom/2

?- assert(fact("name", "surname", "123")).
true.

?- fact(Tmp, _, _), string_to_atom(Tmp, X).
Tmp = [110, 97, 109, 101],
X = name.

答案 1 :(得分:1)

Prolog中的字符串用单引号括起来。当您使用双引号时,表示您需要字符代码列表。

?- is_list('abc').
false.

?- is_list("abc").
true.

?- write("abc").
[97,98,99]
true.

?- write('abc').
abc
true.

答案 2 :(得分:0)

试试这个,

| ?- assert(fact("name", "surname", "123")).
yes
| ?- fact(X,_,_).
X = [110,97,109,101];
| ?- fact(_X,_,_),name(Y,_X).
Y = name;