13.4 Преобразование букв

Данные функции выполняют различные преобразования букв, включая изменение регистра.

[Функция] character object

Функция character если возможно возвращает преобразованный в символ аргумент object. Смотрите coerce.

(character x)  (coerce x ’character)


[Функция] char-upcase char
[Функция] char-downcase char

Аргумент char должен быть буквой. char-upcase пытается возвести символ в верхний регистр. char-downcase пытается возвести символ в нижний регистр.


[Функция] digit-char weight &optional (radix 10)

Все аргументы должны быть целыми числами. digit-char устанавливает может ли быть создан символ, у которого код code такой, что итоговый символ имеет вес weight, когда рассматривается как цифра системы счисления radix (смотрите предикат digit-char-p). В случае успеха возвращается этот символ, иначе nil.

digit-char не может вернуть nil, если radix находится между 2 и 36 включительно и weight имеет неотрицательное значение и меньше чем radix.

Если для результата подходят несколько символов, выбор лежит на плечах реализации. Но символы в верхнем регистре предпочтительнее символов в нижем. Например:

(digit-char 7)  #\7
(digit-char 12)  nil
(digit-char 12 16)  #\C     ;not #\c
(digit-char 6 2)  nil
(digit-char 1 2)  #\1


[Функция] char-int char

Аргумент char должен быть буквой. char-int возвращает неотрицательный целый числовой код символа.

Следует отметить, что

(char= c1 c2)  (= (char-int c1) (char-int c2))

для любых символов c1 и c2

Данная функция создана в основном для хеширования символов.


[Функция] char-name char

Аргумент char должен быть буквой. Если буква имеет имя, то результатом будет это имя (в виде строки), иначе результат будет nil. Имена есть у всех неграфических (не удовлетворяющих предикату graphic-char-p).

Стандартные символы перевода строки и проблема имеют имена Newline и Space. Полустандартные символы имеют имена Tab, Page, Rubout, Linefeed, Return и Backspace.

Символы, у которых есть имена, могут быть заданы с помощью #\ и последующего имени. (Смотрите раздел 22.1.4.) Имя может быть записано в любом регистре, но основной стиль предполагает запись просто с большой буквы #\Space.


[Функция] name-char name

Аргумент name должен быть объектом, который можно превратить в строку, например, с помощью функции string. Если имя совпадает с именем некоторого строкового символа (проверка осуществляется с помощью string-equal), тогда будет возвращён этот символ, иначе возвращается nil.