仅删除字母字符
有没有简单的方法?我试图使用vl string left trim删除所有字母或符号字符。只要我知道这个字符串中的所有内容,我就可以删除它们,但我不知道我是否总是这样。我宁愿有一个安全网,可以捕捉任何东西,以防它发生变化。 使用vl string->list将字符串转换为ASCII字符代码列表,然后使用vl remove if和适当的谓词函数处理此列表,删除不符合条件的代码,然后使用vl list->string将生成的ASCII代码列表转换回字符串。这是一个ASCII字符代码参考。 李,你的解析数呢。lsp,但ascii值设置为非数字作为方法示例。 李-谢谢你的回复。我尝试了一种类似于你今天早些时候建议的方法,但没有成功。我在运行vl string->list后得到了返回的ascii码,但当我尝试使用vl remove if时,我得到了一个错误,指出“比较的参数类型错误”。我知道这可能与我试图获取返回“T”的值时犯的错误有关,但我的大脑已经崩溃了。我认为我的搜索正在引导我走上正确的道路,但我的经验不足使我无法很快地朝着这个方向前进。我明天再拿回来。 示例。。。
(vl-list->string (vl-remove-if (function (lambda (u) (or (< 64 u 91) (< 96 u 123)))) (vl-string->list "Abcd12345XwZ")))
看看突出显示的数字,塔尔瓦特。。。
(vl-list->string (vl-remove-if (function (lambda (u) (or (< 64 u 91) (< 96 u 123)))) (vl-string->list "Abcd12345XwZ")))
感谢Marko的更正,非常感谢。 为什么不呢?
(vl-list->string
(vl-remove-if-not
(function (lambda (u) (< 47 u 58)))
(vl-string->list str)
)
) 香草
(defun numbers1 (str / a b)
(setq a "")
(repeat (strlen str)
(if (< 47 (ascii (setq b (substr str 1 1))) 58)
(setq a (strcat a b))
)
(setq str (substr str 2))
)
a
)
(defun numbers2 (str / a b)
(repeat (strlen str)
(if (< 47 (ascii (setq b (substr str 1 1))) 58)
(setq a (cons b a))
)
(setq str (substr str 2))
)
(apply 'strcat (reverse a))
)
另一个
(mapcar 'vl-list->string
(list (vl-remove-if
'(lambda (u)
(not (member u '(48 49 50 51 52 53 54 55 56 57))
)
)
(vl-string->list "Abcd12345X7789wZ")
)
)
)
页:
[1]
2