gpt4 book ai didi

string - LISP- 从字符串中删除元音

转载 作者:太空宇宙 更新时间:2023-11-03 18:53:53 25 4
gpt4 key购买 nike

我想编写一个函数来删除字符串中的所有元音字母。我想定义一个检测元音的函数,类似于 symbolp、zerop 等,如果它是元音,则将其删除。我怎样才能做到这一点?如果对此有任何意见,我将不胜感激。谢谢

(defun deletevowels (string)
(go through the list
(if vowel-p deletevowels )
)
)

不过,我遇到了删除最后一个元音的问题,我该如何修改它以满足我想要做的,删除字符串中的所有元音?在下面的代码中有我提到的这个函数,元音-p one。

(defun strip-vowel (word)
"Strip off a trailing vowel from a string."
(let* ((str (string word))
(end (- (length str) 1)))
(if (vowel-p (char str end))
(subseq str 0 end)
str)))

(defun vowel-p (char) (find char "aeiou" :test #'char-equal))

此外,如果我使用下面的函数将字符串转换为列表,然后在列表而不是字符串中循环查找元音并将其删除,是否会更容易?

(defun string-to-list (string)
(loop for char across string collect char))

最佳答案

CL-USER 27 > (defun vowel-p (char)
(find char "aeiou" :test #'char-equal))
VOWEL-P

CL-USER 28 > (remove-if #'vowel-p "abcdef")
"bcdf"

参见:Common Lisp Hyperspec,REMOVE-IF .

CL-USER 29 > (defun deletevowels (string)
(remove-if #'vowel-p string))
DELETEVOWELS

CL-USER 30 > (deletevowels "spectacular")
"spctclr"

关于string - LISP- 从字符串中删除元音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15759828/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com