Mik*_*012 3 string common-lisp ccl
我需要测试一个字符串,看看它是否包含任何代码高于十进制127(扩展的ASCII代码)或低于32的字符.有没有任何非常好的方法来做这个或者我只需要遍历整个字符串和比较字符的字符代码?我正在使用常见的lisp实现CCL.
正如你自己建议的那样,便携式方式是
(defun string-standard-p (string &key (min 32) (max 127))
(every (lambda (c) (<= min (char-code c) max)) string))
Run Code Online (Sandbox Code Playgroud)
可能存在特定于实现的方式,例如,在CLISP中,您可以这样做
(defun string-encodable-p (string encoding)
(every (lambda (c) (typep c encoding)) string))
(string-encodable-p "foo" charset:ascii)
==> T
Run Code Online (Sandbox Code Playgroud)
虽然它实际上会接受所有 ASCII字符,而不仅仅是32:127.
(对不起,我不熟悉CCL).
但是,我很确定您找不到比您在问题中建议的解决方案更好的解决方案.
| 归档时间: |
|
| 查看次数: |
311 次 |
| 最近记录: |