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")
我如何从另一个列表中检索包含特定单词的项目列表(字符串)。这是一个例子:
(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")