lisp中的搜索功能

Search function in lisp

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

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

我想提取数字“_jj”中的所有字符串。

你应该制作带有单词和结尾的 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,returns 一个 lambda,其中包含一个单词:

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

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