#format #common-lisp
#форматирование #common-lisp
Вопрос:
Есть ли способ создать format-control, который оставит строки определенной небольшой длины такими, какие они есть, и сократит более длинные строки как:
(defparameter *control*) ;; put proper value here
(defparameter *str* "Lorem ipsum dolor")
(format nil "~@?" *control* *str*) ;; -> "Lorem ipsum dolor"
(defparameter *str* "Lorem ipsum dolor sit amet, consectetur adipiscing elit")
(format nil "~@?" *control* *str*) ;; -> "Lorem ipsum...g elit"
Комментарии:
1. Вы должны изучить
~/name/
директиву. Это позволяет вызывать произвольную функциюname
в элементе управления форматом.2. Однако на этом этапе вызов format не требуется
3. Только если вы хотите встроить это в большее форматирование.
4. Существует библиотека
(str:shorten <length> <string>)
, которая при необходимости обрезает конец и добавляет многоточие.