2010-12-08 10 views
0

J'ai ce fait dans ma base fait ("nom", "nom de famille", "123"). si j'écris simplement cette question: fait (X, _, _). Pour X, je reçois une sortie non identifiée. Comment puis-je récupérer une de ces valeurs, ou comment obtenir cette sortie? ? -fact (X, _, _). sortie: nom.Comment manipuler des chaînes dans prolog?

Merci d'avance.

+0

Essayez fait (X, _, _). (les deux derniers arguments sont des traits de soulignement) – gusbro

Répondre

2

Les chaînes de caractères Prolog sont placées entre guillemets simples. Lorsque vous utilisez des guillemets doubles, cela signifie que vous voulez la liste des codes de caractères.

?- is_list('abc'). 
false. 

?- is_list("abc"). 
true. 

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

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

? - string ('abc'). false. (dans SWI-Prolog) – Kaarel

+6

Les chaînes dans Prolog sont généralement entourées de guillemets * doubles, qui sont du sucre syntaxique pour une liste de codes de caractères. ** Les atomes ** dans Prolog sont entourés de guillemets simples. – sharky

2

Dans SWI-Prolog vous pouvez utiliser string_to_atom/2:

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

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

Merci beaucoup. C'est exactement ce que je cherchais. – Fuzion

0

essayer cela,

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