(defun trim-string (string &optional (char '(#\Space #\Tab #\Newline #\Return #\Linefeed))) (let ((chars (ensure-list char))) (subseq string (loop for index upfrom 0 below (length string) when (not (member (aref string index) chars)) do (return index) ;; if we get here we're trimming the entire string finally (return-from trim-string "")) (loop for index downfrom (length string) when (not (member (aref string (1- index)) chars)) do (return index)))))Source Context