Eu entendo que isso é trivial com um if, mas existe uma opção, como %Sou %sque interpola nada como nenhuma string?
Exemplo:
(format "%?.el" nil) ; ".el"
(format "%?.el" "beginner") ; "beginner.el"
Sim, interpolação de string é o termo certo a ser usado. É uma variação sobre o assunto entre aspas / macros, onde as strings são geradas usando modelos.
—
Wvxvw 01/03
É uma boa pergunta. Considere solicitar um
—
Tirou
formatindicador para isso (use M-x report-emacs-bugpara isso). O resto de nós já se acostumou a usar concatisso, às vezes em combinação com format(para outras conversões). Ou então passar um argumento para format, como (if something "foobar" "")correspondente ao formatindicador "%s".
FYI - Acabei de enviar uma solicitação de aprimoramento (# 19975), para que você não precise. (Deveria ter feito isso anos atrás).
—
Drew
Isso soa como uma maneira bastante duvidosa de criar uma regexp (talvez considere usar a
—
phils
rxmacro nesse cenário. No mínimo, verifique se você está usando o regexp-quoteapropriado), mas, se você tiver um grande número de strings talvez na LIST, poderá sempre faça algo parecido (apply 'format "%s%s%s%s" (mapcar (lambda (x) (or x "")) LIST)). Obviamente, se sua string de formatação é literalmente semelhante "%s%s%s", então concatfaz mais sentido.
interpolationtag.