Ich verstehe, dass dies mit einem if trivial ist, aber gibt es eine Option, wie %Soder %sdie nil als überhaupt keine Zeichenfolge interpoliert?
Beispiel:
(format "%?.el" nil) ; ".el"
(format "%?.el" "beginner") ; "beginner.el"
formatIndikator dafür anzufordern (verwenden Sie ihn M-x report-emacs-bugdafü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 formatsolches übergeben (if something "foobar" ""), das dem formatIndikator entspricht "%s".
rxMakro in einem solchen Szenario verwenden. Stellen Sie zumindest sicher, dass Sie regexp-quoteentsprechend 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 concatnatürlich sinnvoller.
interpolationTag anfordern .