Die
format-time-string
Funktion verwendet eine Zeichenfolge und ersetzt eine Reihe spezieller Konstrukte in dieser Zeichenfolge (vorangestellte Zeichen %
) durch einen bestimmten Text.
Ich möchte eine solche Funktionalität in einer eigenen Funktion implementieren:
- Ich habe eine Liste zwischen Zeichen und Symbolen wie :
'((?n . name) (?r . reputation))
. - Die Funktion sollte eine Zeichenfolge wie annehmen
"My name is %n, and my rep is %r"
. - Es sollte
%n
und%r
durch den Wert der Variablenname
und ersetzen undreputation
das Ergebnis zurückgeben. - Es sollte
%%
genauso funktionierenformat-time-string
(ersetzen durch%
).
Was ist der einfachste Weg, um diese Funktion zu implementieren?
Gibt es eine Bibliothek oder Funktion, die dies erleichtert? Der %%
richtige Umgang ist wichtig.
Da elisp eher primitive Funktionen für den Umgang mit Zeichenfolgen bietet, ist es besser, die Formatzeichenfolge in einen Puffer zu legen und darüber zu iterieren:
Eine geringe Feinheit - das nicht bricht , wenn es ein einsames ist
%
am Ende der Zeichenfolge , dachar-after
kehrtnil
am Ende des Puffers.quelle
Hier ist Code, den ich für eine Format-Zeit-Zeichenfolge für einen gefälschten Kalender verwende:
quelle