Eu entendo que isso é trivial com um if, mas existe uma opção, como %S
ou %s
que 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
format
indicador para isso (use M-x report-emacs-bug
para isso). O resto de nós já se acostumou a usar concat
isso, à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 format
indicador "%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
rx
macro nesse cenário. No mínimo, verifique se você está usando o regexp-quote
apropriado), 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 concat
faz mais sentido.
interpolation
tag.