Common lisp 检查字符是否在字符串中

Common lisp 检查字符是否在字符串中,common-lisp,Common Lisp,在Common Lisp中,是否有谓词来测试给定字符是否是字符串的一部分?或者更一般地说,如果元素是向量的成员 比如: (char-in #\o "foo") 我能够像以前一样实施它 (defun char-in (c s) (member c (coerce s 'list))) 有更好的方法吗?字符串是向量。向量是序列。 字符串是向量和。因此,适用于它们的所有操作: 查找项目: CL-USER 59 > (find #\X "fooXbar") #\X CL-USER 60

在Common Lisp中,是否有谓词来测试给定字符是否是字符串的一部分?或者更一般地说,如果元素是向量的成员

比如:

(char-in #\o "foo")
我能够像以前一样实施它

(defun char-in (c s)
  (member c (coerce s 'list)))

有更好的方法吗?

字符串是向量。向量是序列。

字符串是向量和。因此,适用于它们的所有操作:

查找项目:

CL-USER 59 > (find #\X "fooXbar")
#\X

CL-USER 60 > (find #\x "fooXbar")
NIL
CL-USER 61 > (position #\x "fooXbar")
NIL

CL-USER 62 > (position #\X "fooXbar")
3
CL-USER 63 > (search "X" "fooXbar")
3

CL-USER 64 > (search "x" "fooXbar")
NIL
查找项目的位置:

CL-USER 59 > (find #\X "fooXbar")
#\X

CL-USER 60 > (find #\x "fooXbar")
NIL
CL-USER 61 > (position #\x "fooXbar")
NIL

CL-USER 62 > (position #\X "fooXbar")
3
CL-USER 63 > (search "X" "fooXbar")
3

CL-USER 64 > (search "x" "fooXbar")
NIL
搜索子序列:

CL-USER 59 > (find #\X "fooXbar")
#\X

CL-USER 60 > (find #\x "fooXbar")
NIL
CL-USER 61 > (position #\x "fooXbar")
NIL

CL-USER 62 > (position #\X "fooXbar")
3
CL-USER 63 > (search "X" "fooXbar")
3

CL-USER 64 > (search "x" "fooXbar")
NIL
默认测试为EQL

所有函数都使用
EQL
作为默认测试,但您可以使用另一个-例如,不区分大小写的查找将是:

CL-USER 65 > (find #\x "fooXbar" :test #'char-equal)
#\X

我还提出了这个文档:我认为最类似于我所想的代码是:(some(lambda(x)(char=x#\o)“foo”)。