Capisco che questo è banale con un if, ma esiste un'opzione, like %S
o %s
che interpola zero come nessuna stringa?
Esempio:
(format "%?.el" nil) ; ".el"
(format "%?.el" "beginner") ; "beginner.el"
format
indicatore per questo (utilizzare M-x report-emacs-bug
per quello). Il resto di noi si è abituato a utilizzare concat
per questo, a volte in combinazione con format
(per altre conversioni). Oppure passare un argomento a format
tale (if something "foobar" "")
, corrispondente format
all'indicatore "%s"
.
rx
macro in uno scenario del genere. Almeno assicurati di essere regexp-quote
il più appropriato), ma a parte questo se hai un gran numero di forse-stringhe in ELENCO potresti fai sempre qualcosa del genere (apply 'format "%s%s%s%s" (mapcar (lambda (x) (or x "")) LIST))
. Naturalmente se la stringa del tuo formato è letteralmente simile "%s%s%s"
, allora concat
ha davvero più senso.
interpolation
tag richiesto .