Spec-Zone.ru › Elisp

Основы строк и символов

Символ — это объект Lisp, представляющий один текстовый символ. В Emacs Lisp символы — это просто целые числа; определяется, является ли целое число символом, только тем, как оно используется. Подробнее о представлении символов в Emacs см. в разделе Коды символов.

Строка — это фиксированная последовательность символов. Она относится к типу последовательностей, называемому массивом, то есть имеет фиксированную длину, которую нельзя изменить после создания (см. Последовательности, массивы и векторы). В отличие от строк в C, строки Emacs Lisp не завершаются специальным кодом символа.

Поскольку строки являются массивами, а значит, и последовательностями, к ним можно применять общие функции для работы с массивами и последовательностями, описанные в разделе Последовательности, массивы и векторы. Например, можно обращаться к отдельным символам строки с помощью функции aref (см. Функции для работы с массивами).

В строках Emacs (а также в буферах) используются два представления текста для символов, отличных от ASCII: однобайтовое и многобайтовое. В большинстве случаев при программировании на Lisp вам не нужно учитывать эти два представления. Подробнее см. в разделе Представления текста.

Иногда последовательности клавиш представлены в виде однобайтовых строк. Когда однобайтовая строка является последовательностью клавиш, её элементы в диапазоне от 128 до 255 представляют метасимволы (то есть большие целые числа), а не коды символов в диапазоне от 128 до 255. Строки не могут содержать символы с модификаторами hyper, super или alt; они могут содержать управляющие символы ASCII, но не другие управляющие символы. Регистр управляющих символов ASCII не различается. Если вы хотите хранить такие символы в последовательности, например в последовательности клавиш, необходимо использовать вектор вместо строки. Дополнительные сведения о символах, вводимых с клавиатуры, см. в разделе Тип символа.

Строки удобно использовать для хранения регулярных выражений. Регулярные выражения также можно сопоставлять со строками с помощью string-match (см. Поиск с использованием регулярных выражений). Функции match-string (см. Простой доступ к данным о совпадении) и replace-match (см. Замена совпавшего текста) полезны для разбиения и изменения строк после сопоставления с ними регулярных выражений.

Как и буфер, строка может содержать текстовые свойства своих символов наряду с самими символами. См. раздел Текстовые свойства. Все примитивы Lisp, копирующие текст из строк в буферы или другие строки, также копируют свойства копируемых символов.

Сведения о функциях отображения строк и их копирования в буферы см. в разделе Текст. Сведения о синтаксисе символов и строк см. в разделах Тип символа и Тип строки. Функции преобразования между представлениями текста, а также кодирования и декодирования кодов символов описаны в разделе Символы, отличные от ASCII. Также обратите внимание, что length не следует использовать для вычисления ширины строки при отображении; вместо этого используйте string-width (см. Размер отображаемого текста).

Copyright © 1990-1996, 1998-2026 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/String-Basics.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API