Основы строк и символов
Символ — это объект Lisp, представляющий собой один символ текста. В Emacs Lisp символы — это просто целые числа; является ли целое число символом или нет, определяется только способом его использования. Подробности о представлении символов в Emacs см. в разделе Кодовые таблицы символов.
Строка — это фиксированная последовательность символов. Это тип последовательности, называемый массивом, что означает, что её длина фиксирована и не может быть изменена после создания (см. Последовательности, массивы, векторы). В отличие от C, строки в Emacs Lisp не завершаются специальным кодом символа.
Поскольку строки являются массивами, а значит и последовательностями, к ним можно применять общие функции для массивов и последовательностей, описанные в Последовательности, массивы, векторы. Например, вы можете получить доступ к отдельным символам в строке, используя функцию aref (см. Функции массивов).
Существуют два способа представления не-ASCII символов в строках Emacs (и в буферах): однобайтовый и многобайтовый. Для большинства задач программирования на Lisp вам не нужно беспокоиться об этих двух представлениях. Подробности см. в разделе Представления текста.
Иногда последовательности клавиш представляются как однобайтовые строки. Когда однобайтовая строка является последовательностью клавиш, элементы строки в диапазоне от 128 до 255 представляют символы метаданных (которые являются большими целыми числами), а не кодовые точки символов в диапазоне от 128 до 255. Строки не могут содержать символы с модификаторами гипер, супер или альт; они могут содержать управляющие символы ASCII, но не другие управляющие символы. Они не различают регистр управляющих символов ASCII. Если вы хотите хранить такие символы в последовательности, например, в последовательности клавиш, вы должны использовать вектор вместо строки. Дополнительную информацию о символах ввода с клавиатуры см. в разделе Тип символа.
Строки полезны для хранения регулярных выражений. Регулярные выражения также можно сопоставлять со строками с помощью функции string-match (см. Поиск по регулярным выражениям). Функции match-string (см. Простые данные совпадений) и replace-match (см. Замена совпадения) полезны для разложения и изменения строк после сопоставления регулярных выражений с ними.
Как и буфер, строка может содержать свойства текста для символов в ней, а также сами символы. См. Свойства текста. Все лисп-примитивы, которые копируют текст из строк в буферы или другие строки, также копируют свойства копируемых символов.
Сведения о функциях, которые отображают строки или копируют их в буферы, см. в разделе Текст. Сведения о синтаксисе символов и строк см. в разделах Тип символа и Тип строки. Функции преобразования между представлениями текста, кодирования и декодирования кодов символов см. в разделе Не-ASCII символы. Также обратите внимание, что length не следует использовать для вычисления ширины строки на экране; используйте string-width (см. Размер отображаемого текста) вместо этого.
Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/String-Basics.html