Ich verstehe, dass dies mit einem if trivial ist, aber gibt es eine Option, wie %S
oder %s
die nil als überhaupt keine Zeichenfolge interpoliert?
Beispiel:
(format "%?.el" nil) ; ".el"
(format "%?.el" "beginner") ; "beginner.el"
format
Indikator dafür anzufordern (verwenden Sie ihn M-x report-emacs-bug
dafür). Der Rest von uns hat sich daran gewöhnt concat
, manchmal in Kombination mit format
(für andere Konvertierungen). Oder ein Argument an ein format
solches übergeben (if something "foobar" "")
, das dem format
Indikator entspricht "%s"
.
rx
Makro in einem solchen Szenario verwenden. Stellen Sie zumindest sicher, dass Sie regexp-quote
entsprechend sind), aber abgesehen davon, wenn Sie eine große Anzahl von Vielleicht-Zeichenfolgen in LIST haben, könnten Sie dies tun mach immer so etwas (apply 'format "%s%s%s%s" (mapcar (lambda (x) (or x "")) LIST))
. Wenn Ihre Formatzeichenfolge buchstäblich so ist "%s%s%s"
, ist dies concat
natürlich sinnvoller.
interpolation
Tag anfordern .