我有一个方法length(list,var),它给我一个列表的长度,但是我想找到一个字符串的长度,有解决方案的人吗?
最佳答案
如果您想使用ISO Prolog,则不会使用name/2
谓词。
ISO Prolog为您提供atom_codes/2
和atom_chars/2
。他们为您提供
将原子后退转换为代码列表的功能
或字符列表。原子是Prolog系统的字符串,并且
字符只是长度为1的原子。这是一些示例调用
这两个谓词中的一个:
?- atom_codes(ant, L).
L = [97,110,116]
?- atom_codes(X, [97,110,116]).
X = ant
?- atom_chars(ant, X).
X = [a,n,t]
?- atom_chars(X,[a,n,t]).
X = ant
现在,您想知道如何确定字符串(又名atom)的长度。一
要走的路是先确定代码或字符,然后
计算此列表的长度。但是ISO还提供了
atom_length/2
谓词。它的工作方式如下:?- atom_length(ant,X).
X = 3
许多Prolog系统都提供了这套内置谓词,即
SWI Prolog,GNU Prolog,Jekejeke Prolog等。可用字符
代码范围和编码取决于Prolog系统。有些允许
只有8位代码,一些16位代码和一些32位代码。
同样,原子的最大长度可能会有所不同,有时
是与原子相比未列出的额外字符串类型
经常使用的类型。但是这种额外的类型通常是不一样的
作为双引号括起来的字符串,仅是
字符列表。
再见
关于prolog - 如何使用Prolog查找字符串长度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10431130/