将字符串拆分为单个字符

时间:2011-04-18 17:49:43

标签: string lisp ascii

我在使用Lisp时遇到两个问题,我找不到任何可以解释这个问题的教程或网站。如何将字符串拆分为单个字符?我怎样才能将这些字符更改为相应的ASCII值?如果有人知道任何解释这些的网站或教程视频,他们将不胜感激。

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

在某种程度上,Lisp字符串已经拆分为其字符。它是一个字符向量,根据你需要做什么,你可以使用它上面的整个字符串操作,或者适用于向量的任何操作(比如序列协议的所有操作)来处理单个字符。

答案 2 :(得分:0)

split-string根据正则表达式分隔符将字符串拆分为子字符串 分隔符的每个匹配定义一个分裂点;分裂点之间的子串被制成一个列表,并返回该列表。如果omit-nulls为nil(或省略),则只要分隔符有两个连续匹配项,或者匹配项与字符串的开头或结尾相邻,结果就包含空字符串。如果omit-nulls为t,则结果中将省略这些空字符串。如果分隔符为nil(或省略),则缺省值为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")

答案 3 :(得分:0)

您也可以使用elt或aref从字符串中获取特定字符。

深入介绍Common Lisp的最佳网站之一是Practical Common Lisp booklink to the section on numbers, chars and strings)的网站。全书可在线免费获取。看看吧。