gpt4 book ai didi

string - 即使最后一个字符是定界符也拆分字符串

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

我想删除字符串末尾的一些字符。

我做了这个功能:

(defun del-delimiter-at-end (string)
(cond
((eq (delimiterp (char string (- (length string) 1))) nil)
string )
(t
(del-delimiterp-at-end (subseq string 0 (- (length string) 1))) ) ) )

用这个:

(defun delimiterp (c) (position c " ,.;!?/"))

但我不明白为什么它不起作用。我有以下错误:

Index must be positive and not -1

请注意,我想在字符串列表中拆分一个字符串,我已经看过这里了:

Lisp - Splitting Input into Separate Strings

但如果字符串的末尾是定界符,它就不起作用,这就是我尝试这样做的原因。

我做错了什么?提前致谢。

最佳答案

简单的方法

只需使用 string-right-trim :

(string-right-trim " ,.;!?/" s)

你的错误

如果您将空字符串传递给del-delimiter-at-end,您将传递-1 作为char 的第二个参数。 .

你的代码

  1. 没有理由做 (eq (delimiterp ...) nil);只需使用 (delimiterp ...) 代替(并切换子句!)

  2. 使用 if 是模式惯用的方式而不是 cond当您只有两个子句并且每个子句只有一种形式时。

  3. 你调用subseq递归地,这意味着您不仅无缘无故地分配内存,而且您的算法在字符串长度上也是二次

关于string - 即使最后一个字符是定界符也拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24000527/

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