Под «украшенной струной» я имею в виду
#("foo" 0 4 (fontified t face font-lock-function-name-face))
... в отличие от "простой строки"
"foo"
(Если код Elisp читает строку непосредственно из буфера, она может быть оформлена следующим образом.)
Какой самый простой способ преобразовать декорированную строку в простую (сняв все декорации)?
Ответы:
[Ваша выделенная строка выглядит неправильно - возможно, вы скопировали ее неправильно.
foo
имеет только 3 символа, поэтому его невозможно определить на символах от 0 до 4 (т. е. на символах 0, 1, 2 и 3 - это 4 символа). Я использую 3 вместо 4 в примере здесь.]См. Руководство Elisp, узел Изменение свойств . Там вы увидите это под функцией
remove-text-properties
(которую вы также можете использовать для выполнения работы):Как уже упоминалось @Dan, вы также можете использовать
substring-no-properties
, но имейте в виду, что он возвращает новую строку. Он не изменяет фактический строковый объект, который вы передаете. Обаremove-text-properties
иset-text-properties
измените строку, которую вы передаете им.Например:
Оба
foo
иbar
сейчас просто"foo"
, без свойств.Но:
Теперь
foo
не имеет свойств, ноbar
все еще имеет их.источник