检查字符是否在字符串中

时间:2018-09-09 06:21:49

标签: common-lisp

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

类似的东西:

(char-in #\o "foo")

我能够将其实现为

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

有更好的方法吗?

1 个答案:

答案 0 :(得分:9)

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

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

查找项目:

function get_duplicates ($array) {
    return array_unique( array_diff_assoc( $array, array_unique( $array ) ) );
}

查找项目的位置:

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

默认测试为EQL

所有函数都将CL-USER 63 > (search "X" "fooXbar") 3 CL-USER 64 > (search "x" "fooXbar") NIL 用作默认测试,但是您可以使用另一个函数-例如,不区分大小写的查找将是:

EQL