特定の入力文字列を特定のサイズに中央揃えして、入力文字列の両側 (左右) にスペースが埋め込まれた文字列が生成されるようにしたいと考えています。
私がこれをしなければならないコード:
(defun center-string (string size)
(let* ((padding (/ (- size (length string)) 2))
(lpad (+ (length string) padding))
(lformat (format "%%%ds" lpad))
(rformat (format "%%%ds" (- size))))
(format rformat (format lformat string))))
そしていくつかのテストケース:
(center-string "KJF" 10)
=> " KJF "
(center-string "KF" 10)
=> " KF "
(center-string "0123456789" 10)
=> "0123456789"
(center-string "0123456789" 5)
=> "0123456789" ; Notice justifcation is ignored as input string too large.
これを行うための既存のelisp関数またはより良い方法はありますか?