检查字符是否在字符串中

问题描述 投票:3回答:1

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

就像是:

(char-in #\o "foo")

我能够实现它

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

有没有更好的办法?

common-lisp
1个回答
9
投票

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

字符串是矢量和sequences。所以他们的所有操作都适用:

查找项目:

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
© www.soinside.com 2019 - 2024. All rights reserved.