![]() |
1
7
弦是 Sequences Arrays (字符的一维向量)以及, Strings . 这意味着这些功能中的大多数都是适用的。 让我们看看 REMOVE . CLHS签字如下:
或(例如)
记得:
这将查看序列中的每个字符,并将其转换为字符串。然后将该字符串与您的项目进行比较
另一种方法是:
上面检索的第一个字符
因此,如果原始对象以字符串形式出现,那么最好的编写方法是:
上面我们从字符串中获取字符
你期望什么?\foo是什么?在公共Lisp中,这是符号
SUBSEQ从序列中提取序列。这意味着它还会从另一个字符串中提取一个字符串:
连接附加序列。这意味着它还附加字符串。
要删除字符串的某些部分,请参见函数string-TRIM、string-LEFT-TRIM和string-RIGHT-TRIM。
搜索在字符串中搜索字符串。 |
![]() |
2
2
要删除整个子字符串,您必须创建一个新函数,例如: (defun remove-string (rem-string full-string &key from-end (test #'eql) test-not (start1 0) end1 (start2 0) end2 key) "returns full-string with rem-string removed" (let ((subst-point (search rem-string full-string :from-end from-end :test test :test-not test-not :start1 start1 :end1 end1 :start2 start2 :end2 end2 :key key))) (if subst-point (concatenate 'string (subseq full-string 0 subst-point) (subseq full-string (+ subst-point (length rem-string)))) full-string))) 这只是一个起点。我复制了搜索的所有选项,但我认为有些选项在这种情况下没有意义。至少这是可行的: (remove-string "node" "this is a node or not") 对于更复杂的情况,您可能应该看看CLPPCRE,一个正则表达式库。 |
![]() |
3
2
说明:
它们分别是:一个字符串、一个(带引号的)符号、一个(已计算的)符号、一个格式错误的字符文本和一个包含一个字符串的列表。 REMOVE 如果您只想删除字符串的一部分,SUBSEQ可能会执行以下操作:
对于更复杂的事情,您可能需要像cl-ppcre和/或split-sequence这样的库。(如果您正在使用Hunchentoot,则已加载前者。) |
![]() |
4
0
此操作失败,因为“/”是字符串,而不是字符。
如果需要字符,则需要使用#/即正斜杠字符。
但正如你所看到的,它会被移除 全部的 前斜杠。根据您链接的文档页面,remove采用名为:count的关键字参数,该参数表示要删除的项目数。所以你可以这样做。
::编辑:: 不是?/,是#/。谢谢道格拉斯! |