Je comprends que c'est trivial avec un if, mais y a-t-il une option, comme %S
ou %s
qui interpole nil comme pas de chaîne du tout?
Exemple:
(format "%?.el" nil) ; ".el"
(format "%?.el" "beginner") ; "beginner.el"
format
indicateur pour cela (à utiliser M-x report-emacs-bug
pour cela). Les autres d'entre nous se sont habitués à l'utiliser concat
pour cela, parfois en combinaison avec format
(pour d'autres conversions). Ou bien en passant un argument à format
tel que (if something "foobar" "")
, correspondant à l' format
indicateur "%s"
.
rx
macro dans un tel scénario. Assurez-vous au minimum que vous êtes regexp-quote
approprié), mais cela mis à part si vous avez un grand nombre de chaînes peut-être dans LIST, vous pourriez faites toujours quelque chose comme (apply 'format "%s%s%s%s" (mapcar (lambda (x) (or x "")) LIST))
. Bien sûr, si votre chaîne de formatage est littéralement semblable "%s%s%s"
, concat
cela a plus de sens.
interpolation
balise.