我想将给定的输入字符串居中对齐到给定的大小,以便生成的是输入字符串两侧(左侧和右侧)带有填充空格的字符串。
我必须这样做的代码:
(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 函数可以执行此操作或更好的方法?