Strip control codes and extended characters from a string: Difference between revisions

→‎{{header|Common Lisp}}: Better implementation
(Rename Perl 6 -> Raku, alphabetize, minor clean-up)
(→‎{{header|Common Lisp}}: Better implementation)
Line 579:
 
=={{header|Common Lisp}}==
<pre>
<pre>> (defparameter *extended-ascii* (coerce (loop for i from 0 to 255 collect (code-char i)) 'string))
(defun control-char-p (ch)
(letor ((x< (char-code c)ch) 32)
(= (char-code ch) 127)))
 
(defun extended-char-p (ch)
*EXTENDED-ASCII*
(> (char-code ch) 127))
> (defparameter *control-codes-stripped*
(remove-if #'(lambda (c)
(let ((x (char-code c)))
(or (< x 32) (= x 127))))
*extended-ascii*))
 
(defun strip-special-chars (string &key strip-extended)
*CONTROL-CODES-STRIPPED*
(let ((needs-removing-p (if strip-extended
> *control-codes-stripped*
(or (< x 32) (= x 127))) (lambda (ch)
 
(or (control-char-p ch)
" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklm¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"
* (extended-ascii*char-p ch)))
> (defparameter *control-codes-and-extended-stripped*
(remove-if-not #'(lambda (c) (and (standard-char-p c) (graphic #'control-char-p c)))
(remove-if #'(lambdaneeds-removing-p (cstring)))
*extended-ascii*))
</pre>
 
*CONTROL-CODES-AND-EXTENDED-STRIPPED*
> *control-codes-and-extended-stripped*
 
" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~"</pre>
 
=={{header|D}}==
Anonymous user