3

文字列をテストして、10 進数の 127 を超えるコード (拡張 ASCII コード) または 32 未満の文字が含まれているかどうかを確認する必要があります。文字の文字コードを比較しますか? Common Lisp 実装 CCL を使用しています。

4

1 に答える 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

ただし、実際には32:127 だけでなく、すべてのASCII 文字を受け入れます。

(すみません、私はCCLに精通していません)。

ただし、質問で提案したものよりも優れた解決策が見つからないことは間違いありません。

于 2013-04-29T20:37:37.390 に答える