String 将字符串拆分为单个字符

String 将字符串拆分为单个字符,string,lisp,ascii,common-lisp,String,Lisp,Ascii,Common Lisp,我在使用Lisp时遇到了两个问题,我找不到任何教程或网站来解释这一点。如何将字符串拆分为单个字符?我怎样才能将这些字符转换成相应的ASCII值呢?如果有人知道任何网站或教程视频解释这些,他们将不胜感激 CL-USER 87 > (coerce "abc" 'list) (#\a #\b #\c) CL-USER 88 > (map 'list #'char-code "abc") (97 98 99) 获取。拆分字符串基于正则表达式分隔符将字符串拆分为子字符串 分隔符的每个匹配

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

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


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

获取。

拆分字符串
基于正则表达式分隔符将字符串拆分为子字符串 分隔符的每个匹配定义一个分割点;拆分点之间的子字符串被制成一个列表,并返回该列表。如果ommit nulls为nil(或省略),则只要分隔符有两个连续的匹配项,或者匹配项与字符串的开头或结尾相邻,结果就会包含null字符串。如果ommit nulls是t,则从结果中忽略这些空字符串。如果分隔符为nil(或省略),则默认值为拆分字符串默认分隔符的值

作为一种特殊情况,当分隔符为
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")

您还可以使用elt或aref从字符串中提取特定字符


深入介绍Common Lisp的最佳站点之一是()的站点。整本书在网上免费提供。查看它。

某种程度上,一个Lisp字符串已经被拆分为它的字符。它是一个字符向量,根据您需要执行的操作,您可以对其使用整字符串操作,也可以使用适用于向量的任何操作(如序列协议的所有操作)来处理单个字符。

因此,使用拆分字符串,可以将字符串分隔成字符吗?或者这是字符分隔符吗?如果我不知道字符串中有多少个字符呢?那么elt和aref还可以使用吗?@user710086:您可以使用
length
获取字符串的长度。除了适用于任何序列的
elt
,以及适用于任何数组的
aref
,您还可以使用函数
char
,该函数仅适用于字符串。指向“Common Lisp Quick Reference”的链接已经过时。