我有一個方法長度(列表,var),它給了我一個列表的長度,但我想找到一個字符串的長度,任何人都有一個解決方案?如何使用序言找到字符串長度
回答
只是用它玩,我給了謂語
?- length("hello", R).
R = 5.
令人驚訝它的工作:)
中是更好的選擇您可以檢查您的prolog系統並查詢prolog標誌double_quotes。如果它表示代碼,則雙引號將作爲字符代碼列表讀入。SWI-Prolog:? - current_prolog_flag(double_quotes,X)。 X =代碼。 - 「你好」= [104,101,108,108,111]。 爲真。 –
由於字符串是原子,你不能直接操縱他們得到的長度,提取子等,首先你必須將它們轉換爲字符名單與atom_chars/2
:
atom_chars(StrVar, ListVar), length(ListVar, LengthVar).
'name/2'不是ISO Prolog,在這裏不是最好的選擇。 – m09
謝謝,@Mog。更新。但正如CM所說,atom_length在ISO –
如果你想去ISO Prolog,那麼你就不會使用 的name/2
謂詞。
ISO Prolog爲您提供atom_codes/2
和atom_chars/2
。它們爲您提供將原子轉換回代碼列表 或字符列表的功能。原子是一個Prolog的系統的字符串, 人物僅僅是長度爲1的原子下面是一些例子invokations兩個謂詞 :
?- 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
現在你想知道如何判斷一個字符串又名原子的長度。一個 的方法是首先確定代碼或字符,然後 計算該列表的長度。但ISO也提供了一個謂詞。其工作原理如下:
?- atom_length(ant,X).
X = 3
大部分Prolog系統提供這套內置謂詞,即 SWI序言,序言GNU,Jekejeke的Prolog等..可用字符 代碼範圍和編碼依賴Prolog的系統上。一些允許 只有8位代碼,一些16位代碼和一些32位代碼。
另外,原子的最大長度可能不同,有時候 是一個額外的字符串類型,它與原始類型 類型不同。但是這種額外類型通常與雙引號封閉字符串 不同,它只是 字符列表的簡寫。
再見
也許這:從Prolog的手動
string_length(+String, -Length)
。
這可用於SWI-Prolog,但我不知道這個謂詞是否內置於其他Prolog系統。 –
- 1. 程序找到字符串的長度
- 2. 如何找出字符串長度
- 3. 如何找到最長的字符串長度節點值
- 4. 未找到分隔符/字符串長度超過DDL長度
- 5. 找到輸入字符串的長度
- 6. 找到一個字符串的長度
- 7. 如何在IOS中找到多語言句子的字符串長度
- 8. 如何使用LINQ找到字符串[]中最長的字符串使用LINQ
- 9. 如何在使用strlen()的out中查找字符串長度?
- 10. 查找最長字符串的長度
- 11. 如何查找字符串中前導序列的長度?
- 12. 內找到長字符串
- 13. 如何快速找到匹配不同的字符串長度
- 14. 如何排序使用Arrays.sort由長度字符串數組()
- 15. 如何使用Scala Spark查找字符串中的字符長度Spark
- 16. 如何找到字符串長度使用在目標C的strlen
- 17. 如何使用RowFilter查找列中最長字符串的長度?
- 18. 字符串的長度比字符串的長度長
- 19. 如何找到字符串相似度?
- 20. C語言程序設計:查找空字符的長度
- 21. 查找multiplicy長度的字符串
- 22. 找出字符串的長度
- 23. 查找字符串的長度
- 24. 如何按字符串的長度和字母順序排序?
- 25. 如何找到一個字符串的最長重複序列
- 26. 查找字符串長度,而不使用strlen的和用C
- 27. 使用NASM的字符串的長度
- 28. PHP中使用字符串長度
- 29. 使用strlen檢查字符串長度
- 30. Typescript字符串|字符串[]查找數組長度
檢查[「在Prolog中使用字符串」](http://obvcode.blogspot.com/2008/11/working-with-strings-in-prolog.html)文章 –
本文引起混淆(混合字符串和原子)並建議非標準謂詞。我建議不要閱讀它。我會avise [這個優秀的答案](http://stackoverflow.com/questions/8264699/what-is-the-difference-between-and-in-prolog/8269897#8269897)得到什麼是Prolog字符串。 – m09