2011-04-18 52 views
5

我在Lisp中工作時遇到了兩個問題,而且找不到任何解釋此問題的教程或網站。你如何將一個字符串分解爲單個字符?而且我怎麼能夠將這些字符變成相應的ASCII值呢?如果有人知道任何網站或教程視頻解釋這些,他們將不勝感激。將字符串拆分爲單個字符

回答

9
CL-USER 87 > (coerce "abc" 'list) 
(#\a #\b #\c) 


CL-USER 88 > (map 'list #'char-code "abc") 
(97 98 99) 

獲取Common Lisp Quick Reference

+0

指向「Common Lisp Quick Reference」的鏈接已經死了。 – 2016-01-07 14:27:40

+0

@ Reb.Cabin:固定。 – 2016-01-07 15:12:37

0

split-string分割字符串轉換成基於所述正則表達式隔板 每個匹配隔板限定了分束點的子串;分裂點之間的子串被製成一個列表,返回。如果omit-nulls爲零(或省略),則每當有兩個連續的分隔符匹配時結果包含空字符串,或者匹配與字符串的開頭或結尾相鄰。如果省略-null爲t,則從結果中省略這些空字符串。如果分隔符爲零(或省略),則缺省值爲split-string-default-separators的值。

作爲特殊情況,當分隔符爲nil(或省略)時,從結果中始終省略空字符串 。因此:

(split-string " two words ") -> ("two" "words") 
The result is not ("" "two" "words" ""), which would rarely be useful. If you need 
such a result, use an explicit value for separators: 
(split-string " two words " split-string-default-separators) -> ("" "two" "words" "") 

More examples: 
(split-string "Soup is good food" "o") -> ("S" "up is g" "" "d f" "" "d") 
(split-string "Soup is good food" "o" t) -> ("S" "up is g" "d f" "d") 
(split-string "Soup is good food" "o+") -> ("S" "up is g" "d f" "d") 
+0

因此,使用拆分字符串,是否可以將字符串分隔成字符,還是用於字符分隔符? – 2011-04-18 17:59:54

0

您還可以使用elt或aref從字符串中獲取特定字符。

深入介紹Common Lisp的最佳網站之一是Practical Common Lisp booklink to the section on numbers, chars and strings)的網站。全書免費在線提供。一探究竟。

+0

如果我不知道字符串中有多少個字符,該怎麼辦?那麼elt和aref仍然可以使用嗎? – 2011-04-18 18:41:25

+0

@ user710086:您可以使用'length'來獲取字符串的長度。除了適用於任何序列的'elt'和適用於任何數組的'aref'外,還可以使用函數'char',它僅用於字符串。 – 2011-04-18 21:07:06

1

以某種方式,Lisp字符串已被拆分爲其字符。它是一個字符向量,根據你需要做的事情,你可以使用整個字符串操作,或者任何適用於向量的操作(如序列協議的所有操作)來處理單個字符。