删除 Prolog 中的单个 quotes/quotation 标记
Remove single quotes/quotation marks in Prolog
我有一个 extern API 向我的 Prolog 应用程序发送信息,我发现创建事实时出现问题。
当收到的信息很多时,Prolog 会自动向该信息添加 '
(单引号)。
示例:接收到的数据,我创建的事实是:
object(ObjectID,ObjectName,'[(1,09:00,12:00),(2,10:00,12:00)]',anotherID)
我想创造的事实是
object(ObjectID,ObjectName,[(1,09:00,12:00),(2,10:00,12:00)] ,anotherID)
没有列表前的 '
。
有谁知道如何解决这个问题?使用接收 '[(1,09:00,12:00),(2,10:00,12:00)]'
和 returns [(1,09:00,12:00),(2,10:00,12:00)]
?
的谓词
你看到的是一个atom,你想把它转换成我认为的term。
如果你使用swi-prolog, you can use the builtin term_to_atom/2
:
True if Atom
describes a term that unifies with Term
. When Atom
is instantiated, Atom
is parsed and the result unified with Term
.
示例:
?- term_to_atom(X,'[(1,09:00,12:00),(2,10:00,12:00)]').
X = [ (1, 9:0, 12:0), (2, 10:0, 12:0)].
因此,在右侧输入 atom,在左侧输入“equivalent”术语。但是请注意,例如 00
被解释为数字,因此等于 0
,这可能是意外行为。
因此您可以将谓词翻译为:
translate(object(A,B,C,D),object(A,B,CT,D)) :-
term_to_atom(CT,C).
由于您没有完全说明如何获取这些数据,我不知道您将如何转换它。不过上面的方法应该会有一些帮助。
我有一个 extern API 向我的 Prolog 应用程序发送信息,我发现创建事实时出现问题。
当收到的信息很多时,Prolog 会自动向该信息添加 '
(单引号)。
示例:接收到的数据,我创建的事实是:
object(ObjectID,ObjectName,'[(1,09:00,12:00),(2,10:00,12:00)]',anotherID)
我想创造的事实是
object(ObjectID,ObjectName,[(1,09:00,12:00),(2,10:00,12:00)] ,anotherID)
没有列表前的 '
。
有谁知道如何解决这个问题?使用接收 '[(1,09:00,12:00),(2,10:00,12:00)]'
和 returns [(1,09:00,12:00),(2,10:00,12:00)]
?
你看到的是一个atom,你想把它转换成我认为的term。
如果你使用swi-prolog, you can use the builtin term_to_atom/2
:
True if
Atom
describes a term that unifies withTerm
. WhenAtom
is instantiated,Atom
is parsed and the result unified withTerm
.
示例:
?- term_to_atom(X,'[(1,09:00,12:00),(2,10:00,12:00)]').
X = [ (1, 9:0, 12:0), (2, 10:0, 12:0)].
因此,在右侧输入 atom,在左侧输入“equivalent”术语。但是请注意,例如 00
被解释为数字,因此等于 0
,这可能是意外行为。
因此您可以将谓词翻译为:
translate(object(A,B,C,D),object(A,B,CT,D)) :-
term_to_atom(CT,C).
由于您没有完全说明如何获取这些数据,我不知道您将如何转换它。不过上面的方法应该会有一些帮助。