这当然为OP提供了另一条考虑的途径。
尽管如此,我并不完全确定期望的结果,即OP是希望只保留整数,还是同时保留连字符和句点,从而也保留小数。
不错的一个pBe
这里有一个递归替代方案:
(defun numbers ( s / c )
(cond
( (wcmatch s "~*#*") "")
( (zerop (setq c (ascii s))) s)
( (< 47 c 58) (strcat (chr c) (numbers (substr s 2))))
( (numbers (substr s 2)))
)
)
我不明白你为什么在这里用mapcar?
这似乎是多余的,因为您似乎只是为了在代码中使用mapcar来构建一个列表,然后mapcar将返回一个列表而不是字符串。。。
因为(list)的返回(vl remove if….将是一个列表,我知道它有点长,所以我们可以将其缩短为这个,当然,与前一个一样,没有括号。
(vl-list->string
(vl-remove-if
'(lambda (u)
(not (member u '(48 49 50 51 52 53 54 55 56 57))
)
)
(vl-string->list "Abcd12345X7789wZ")
)
)
这正是我的观点——代码正在构建一个不必要的列表,然后使用mapcar处理这个单个项目列表——列表和mapcar都是完全冗余的,正如您在下一篇文章中的代码所示。 Tharwat用列出的所有ascii码显示的是我开始的路径,但当我到达lambda时,我的大脑无法适应这一天的任何其他内容。我喝了几杯啤酒,失去了一些脑细胞,今天又回来了。希望它能坚持下去。谢谢你的建议!
顺便说一句,我希望保留所有数字和一个句号。
只需将数字32相加即可处理周期因子
ascii码不是46,不是32吗? 如果你说的是小数点,那么你是对的,但是如果它是一个自由空间,那么它应该是32。 对不起,小数点(句点)是我的意思。感谢您的澄清。
不客气。 lambda需要不止一个参数吗。我一直收到一个错误,说有太少的论点?
页:
1
[2]