Функции преобразования регистра изменяют регистр отдельных символов или содержимого строк. Обычно функции преобразуют только буквенные символы (буквы от «A» до «Z» и от «a» до «z», а также не-ASCII буквы); другие символы не изменяются. Вы можете указать другую схему преобразования регистра, указав таблицу регистров (см. Таблица регистров).
Эти функции не изменяют переданные им строки в качестве аргументов.
Примеры ниже используют символы «X» и «x», которые имеют коды ASCII 88 и 120 соответственно.
Эта функция преобразует string-or-char, который должен быть либо символом, либо строкой, в нижний регистр.
Когда string-or-char является строкой, эта функция возвращает новую строку, в которой каждая буква в аргументе, написанная заглавными буквами, преобразуется в строчные. Когда string-or-char является символом, эта функция возвращает соответствующий символ в нижнем регистре (целое число); если исходный символ уже в нижнем регистре или не является буквой, возвращаемое значение равно исходному символу.
(downcase "The cat in the hat")
⇒ "the cat in the hat"
(downcase ?X)
⇒ 120
Эта функция преобразует string-or-char, который должен быть либо символом, либо строкой, в верхний регистр.
Когда string-or-char является строкой, эта функция возвращает новую строку, в которой каждая буква в аргументе, написанная строчными буквами, преобразуется в заглавные. Когда string-or-char является символом, эта функция возвращает соответствующий символ в верхнем регистре (целое число); если исходный символ уже в верхнем регистре или не является буквой, возвращаемое значение равно исходному символу.
(upcase "The cat in the hat")
⇒ "THE CAT IN THE HAT"
(upcase ?x)
⇒ 88
Эта функция приводит строки или символы к заглавному регистру. Если string-or-char является строкой, функция возвращает новую строку, содержимое которой является копией string-or-char, в которой каждое слово заглавлено. Это означает, что первый символ каждого слова преобразуется в верхний регистр, а остальные — в нижний.
Определение слова — это любая последовательность соседних символов, которым присваивается класс синтаксиса слова в текущей таблице синтаксиса (см. Таблица классов синтаксиса); если case-symbols-as-words не равен nil, символы, которым присвоен класс синтаксиса символа, также считаются частью слова.
Когда string-or-char является символом, эта функция делает то же самое, что и upcase.
(capitalize "The cat in the hat")
⇒ "The Cat In The Hat"
(capitalize "THE 77TH-HATTED CAT")
⇒ "The 77th-Hatted Cat"
(capitalize ?x)
⇒ 88
Если string-or-char является строкой, эта функция заглавливает начальные буквы слов в string-or-char, не изменяя никаких букв, кроме начальных. Она возвращает новую строку, содержимое которой является копией string-or-char, в которой первая буква каждого слова преобразована в верхний регистр.
Определение слова для этой функции такое же, как описано выше для capitalize, и case-symbols-as-words оказывает такое же влияние на символы слова.
Когда аргумент для upcase-initials является символом, upcase-initials дает тот же результат, что и upcase.
(upcase-initials "The CAT in the hAt")
⇒ "The CAT In The HAt"
Обратите внимание, что преобразование регистра не является однозначным отображением кодовых точек, и длина результата может отличаться от длины аргумента. Кроме того, поскольку передача символа принудительно устанавливает тип возвращаемого значения как символ, функции не могут выполнить надлежащую подстановку, и результат может отличаться от обработки односимвольной строки. Например:
(upcase "fi") ; обратите внимание: одиночный символ, лигатура "fi"
⇒ "FI"
(upcase ?fi)
⇒ 64257 ; т.е. ?fi
Чтобы этого избежать, символ сначала должен быть преобразован в строку с помощью функции string, прежде чем передавать его одной из функций преобразования регистра. Разумеется, никаких предположений о длине результата делать нельзя.
Другие символы также могут иметь специальные правила преобразования регистра. Все они имеют не-nil свойства символа special-uppercase, special-lowercase или special-titlecase (см. Свойства символов), определенные Стандартом Unicode. Эти свойства определяют специальные правила преобразования регистра, которые переопределяют текущую таблицу регистров (см. Таблица регистров).
См. Сравнение символов и строк для функций, сравнивающих строки; некоторые из них игнорируют различия в регистре, а другие могут опционально игнорировать различия в регистре.