返回字符串和数字向量中元素的位置,字符向量使用position
CL-USER> (position #\T "ACGT")
3
CL-USER> (position 2 #(1 2 3 4))
1
CL-USER> (position #\A #(#\A #\C #\G #\T))
0
以下字符串向量不起作用。我认为这是因为字符串本身就是一个字符向量。 那么,有什么用呢?
CL-USER> (position "A" #("A" "C" "G" "T"))
NIL
答案 0 :(得分:9)
默认情况下,POSITION使用EQL测试元素,对于大多数使用测试的序列函数都是如此CLHS 17.2.1。对于向量,EQL按身份而不是内容进行比较,以及两个字符串" A"通常会有所不同,即使它们看起来一样。要按内容进行比较,您需要将:test #'equal
传递给POSITION。或string= or string-equal,它们专门用于字符串,如果其中一个参数不是字符串,则会发出错误信号。 string-equal
也不区分大小写。
答案 1 :(得分:2)
尝试(position "A" #("A" "B" "C" "D") :test #'equal)
。