String SWI Prolog转义引号

String SWI Prolog转义引号,string,prolog,swi-prolog,String,Prolog,Swi Prolog,我需要在prolog中的字符串周围加上“”。 我从另一个程序获得输入,看起来我无法在这个程序中转义“in”,所以我必须在prolog中添加“in”,否则prolog语句就不能工作 谢谢你的帮助 对于see的讨论,它们是特定于SWI Prolog的,但使用与原子相同的逃逸规则。在序言文本中,有许多方法可以在atom中输入引号: 1) 加倍。例如,“不可能”是一个原子, 第四个字符只有一个引号,没有其他字符 单引号 2) 用反斜杠逃离它们。比如说 “不可能”与“不可能”是同一个原子 3) 字符编码,

我需要在prolog中的字符串周围加上“”。 我从另一个程序获得输入,看起来我无法在这个程序中转义“in”,所以我必须在prolog中添加“in”,否则prolog语句就不能工作

谢谢你的帮助

对于see的讨论,它们是特定于SWI Prolog的,但使用与原子相同的逃逸规则。在序言文本中,有许多方法可以在atom中输入引号:

1) 加倍。例如,“不可能”是一个原子, 第四个字符只有一个引号,没有其他字符 单引号

2) 用反斜杠逃离它们。比如说 “不可能”与“不可能”是同一个原子

3) 字符编码,使用八进制代码和反斜杠。 例如,“can\47\t be”与“can't be”是同一个原子

4) 使用十六进制代码和反斜杠对其进行字符编码。 例如,“can\x27\t be”与“can't be”是同一个原子

上述可能性均在ISO标准中定义。A. Prolog实现可能会定义更多的可能性

再见

注意:下面是一个在SWI Prolog中运行的示例,使用不同的 示例字符。在下面的第一个查询示例中,您不需要 需要加倍,加倍只能对周围报价进行

下面的最后一个查询示例显示了特定于SWI Prolog的语法 这在ISO标准中找不到,即使用反斜杠 带有固定宽度十六进制代码的u:

Welcome to SWI-Prolog (Multi-threaded, 64 bits, Version 7.1.33)
Copyright (c) 1990-2015 University of Amsterdam, VU Amsterdam

?- X = 'she said "bye"'.
X = 'she said "bye"'.

?- X = 'she said \"bye\"'.
X = 'she said "bye"'.

?- X = 'she said \42\bye\42\'.
X = 'she said "bye"'.

?- X = 'she said \x22\bye\x22\'.
X = 'she said "bye"'.

?- X = 'she said \u0022bye\u0022'.
X = 'she said "bye"'.

你也可以考虑使用<代码> AbjyString 2 /<代码>,例如:<代码> -AbjyString(猴子,字符串)。< /代码>导致<代码> String =“猴子”< /代码>。谢谢你的回答。我得到了解决方案。我的方法完全错误。这是从SWI6到SWI7的变化。我重新安装了SWI6.6,现在它运行得很好。@false:完全正确。我曾经遇到过这个问题:?-writeq('..(a,[])。错误:键入错误:
dict'预期,发现
a'可以找到有关问题的一些信息。她:您的问题实际上没有描述问题。有些代码会非常有用。@Tim我不明白切换到SWI6是如何解决您的问题的。SWI6根本不支持字符串,所以您也不能在字符串周围加双引号…您在上面使用了哪个SWI Prolog?如果是7.x,您是否使用了命令行选项--“传统”?为什么要问?我的回答有问题吗?唯一的非ISO语法是\uxxx语法。我不知道它是否已经存在于SWI6中,还是只存在于SWI7中。我只是好奇而已!我不确定SWI Prolog是否还有\uxxxxx,哦,见鬼,它有:。