String 如何在prolog中操作字符串?

String 如何在prolog中操作字符串?,string,prolog,String,Prolog,我有这个事实 事实(“姓名”、“姓氏”、“123”)。 如果我简单地写下这个问题: 事实(X,u,u)。对于X,我得到了一些未知的输出。 如何检索这些值,或者如何获取这些输出? ?-事实(X,u,u)。 输出:name 谢谢。序言中的字符串用单引号括起来。当您使用双引号时,意味着您需要字符代码列表 ?- is_list('abc'). false. ?- is_list("abc"). true. ?- write("abc"). [97,98,99] true. ?- write('ab

我有这个事实 事实(“姓名”、“姓氏”、“123”)。 如果我简单地写下这个问题: 事实(X,u,u)。对于X,我得到了一些未知的输出。 如何检索这些值,或者如何获取这些输出? ?-事实(X,u,u)。 输出:name


谢谢。序言中的字符串用单引号括起来。当您使用双引号时,意味着您需要字符代码列表

?- is_list('abc').
false.

?- is_list("abc").
true.

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

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

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

?- is_list('abc').
false.

?- is_list("abc").
true.

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

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

在SWI Prolog中,您可以使用
string\u to\u atom/2

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

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

在SWI Prolog中,您可以使用
string\u to\u atom/2

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

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

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

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

试试事实(X,,)。(最后两个参数是下划线)试试事实(X,,)。(最后两个参数是下划线)?-string('abc')。错。(在SWI Prolog中)Prolog中的字符串通常被括在双引号内,双引号是字符代码列表的语法糖。Prolog中的原子用单引号括起来。?-string('abc')。错。(在SWI Prolog中)Prolog中的字符串通常被括在双引号内,双引号是字符代码列表的语法糖。Prolog中的原子用单引号括起来。非常感谢。那正是我想要的。非常感谢。这正是我想要的。