4.6 Преобразование символов и строк

В этом разделе описываются функции для преобразования между символами, строками и целыми числами. Функция format (см. Форматирование строк) и prin1-to-string (см. Функции вывода) также могут преобразовывать объекты Lisp в строки. Функция read-from-string (см. Функции ввода) может преобразовывать строковое представление объекта Lisp в объект. Функции string-to-multibyte и string-to-unibyte преобразуют текстовое представление строки (см. Преобразование текстовых представлений).

См. Документацию для функций, которые производят текстовые описания текстовых символов и общих событий ввода (single-key-description и text-char-description). Эти функции в основном используются для создания сообщений справки.

Функция: number-to-string number

Эта функция возвращает строку, состоящую из десятичного представления number. Возвращаемое значение начинается с знака минус, если аргумент отрицательный.

(number-to-string 256)
     ⇒ "256"
(number-to-string -23)
     ⇒ "-23"
(number-to-string -23.5)
     ⇒ "-23.5"

int-to-string — это полуустаревший псевдоним для этой функции.

См. также функцию format в Форматирование строк.

Функция: string-to-number string &optional base

Эта функция возвращает числовое значение символов в string. Если base не равен nil, он должен быть целым числом от 2 до 16 включительно, и целые числа преобразуются в этой базе. Если base равен nil, используется десятичная основа. Преобразование с плавающей точкой работает только в десятичной системе; мы не реализовали другие основания для чисел с плавающей запятой, потому что это потребовало бы гораздо больше работы и, по-видимому, не является полезным.

Парсинг пропускает пробелы и табуляции в начале string, затем считывает столько из string, сколько может интерпретировать как число в заданной базе. (В некоторых системах он игнорирует другие пробельные символы в начале, а не только пробелы и табуляции.) Если string не может быть интерпретирована как число, эта функция возвращает 0.

(string-to-number "256")
     ⇒ 256
(string-to-number "25 is a perfect square.")
     ⇒ 25
(string-to-number "X256")
     ⇒ 0
(string-to-number "-4.5")
     ⇒ -4.5
(string-to-number "1e5")
     ⇒ 100000.0
Функция: char-to-string character

Эта функция возвращает новую строку, содержащую один символ, character. Эта функция полуустарела, потому что функция string более обобщена. См. Создание строк.

Функция: string-to-char string

Эта функция возвращает первый символ в string. Это в основном идентично (aref string 0), за исключением того, что она возвращает 0, если строка пуста. (Значение также равно 0, когда первый символ string является нулевым символом, код ASCII 0.) Эта функция может быть удалена в будущем, если она не покажется достаточно полезной для сохранения.

Вот еще несколько функций, которые могут преобразовывать в строку или из строки:

concat

Эта функция преобразует вектор или список в строку. См. Создание строк.

vconcat

Эта функция преобразует строку в вектор. См. Функции для векторов.

append

Эта функция преобразует строку в список. См. Построение ячеек Cons и списков.

byte-to-string

Эта функция преобразует байт данных символа в однобайтовую строку. См. Преобразование текстовых представлений.