在lisp中搜索功能

时间:2015-06-20 12:05:41

标签: search lisp common-lisp

如何检索包含其他列表中特定单词的项目列表(字符串)。这是一个例子:

(setq l '("word1_jj" "word2_mm" "word3_jj" "word4_kk"))

我想提取所有字符串“_jj。

1 个答案:

答案 0 :(得分:1)

你应该ends-with-p取词和结尾。要做到这一点,你会发现两个字符串中有多少个字符,并使用subseq来创建一个由单词的最后一个字母组成的字符串。您可以使用equal来检查它应该匹配的参数。

如果你有,你可以这样做:

(remove-if-not (lambda (x) (ends-with-p x "_jj")) 
               '("word1_jj" "word2_mm" "word3_jj" "word4_kk"))

; ==> ("word1_jj" "word3_jj")

或者,您可以制作一个make-end-predicate,其中会返回lambda,但需要一个字:

(remove-if-not (make-end-predicate "_jj") 
               '("word1_jj" "word2_mm" "word3_jj" "word4_kk"))

; ==> ("word1_jj" "word3_jj")