format-time-string
Функция принимает строку и заменяет набор специальных конструкций в этой строке (символы предваряются %
) с некоторым определенным текстом.
Я хотел бы реализовать такую функциональность в моей собственной функции:
- У меня есть ассоциативный список между символами и символами , такими как:
'((?n . name) (?r . reputation))
. - Функция должна принимать строку вроде
"My name is %n, and my rep is %r"
. - Следует заменить
%n
и%r
на значение переменныхname
иreputation
, и вернуть результат. - Он должен обрабатывать так
%%
же, какformat-time-string
(заменить его%
).
Какой самый простой способ реализовать эту функцию?
Есть ли библиотека или функция, которая облегчит это? %%
Правильное обращение важно.
Поскольку elisp имеет довольно примитивные средства для работы со строками, лучше поместить строку формата в буфер и выполнить итерации по этому:
Небольшая тонкость - это не ломается, когда
%
в конце строки есть одиночество, потому чтоchar-after
возвращаетсяnil
в конец буфера.источник
Вот код, который я использую для строки формата времени для фальшивого календаря:
источник