我需要测试一个字符串,看看它是否包含任何代码高于十进制 127(扩展 ASCII 代码)或低于 32 的字符。有什么非常好的方法可以做到这一点,或者我只需要遍历整个字符串和比较字符的字符代码?我正在使用常见的 lisp 实现 CCL。
问问题
369 次
1 回答
7
正如您自己建议的那样,便携式方式是,
(defun string-standard-p (string &key (min 32) (max 127))
(every (lambda (c) (<= min (char-code c) max)) string))
可能有一种特定于实现的方式,例如,在 CLISP 中,您可以这样做
(defun string-encodable-p (string encoding)
(every (lambda (c) (typep c encoding)) string))
(string-encodable-p "foo" charset:ascii)
==> T
尽管它实际上会接受所有ASCII 字符,而不仅仅是 32:127。
(对不起,我对CCL不熟悉)。
但是,我很确定您不会找到比您在问题中建议的解决方案更好的解决方案。
于 2013-04-29T20:37:37.390 回答