Преобразование регистра в Lisp
Функции изменения регистра символов изменяют регистр отдельных символов или содержимого строк. Функции обычно преобразуют только буквы (буквы от ‘A’ до ‘Z’ и от ‘a’ до ‘z’, а также не-ASCII буквы); другие символы не изменяются. Вы можете указать другое отображение преобразования регистра, указав таблицу регистров (см. Таблицы регистров).
Эти функции не изменяют строки, которые передаются им в качестве аргументов.
В приведенных ниже примерах используются символы ‘X’ и ‘x’, которые имеют коды ASCII 88 и 120 соответственно.
- Функция: downcase string-or-char
-
Эта функция преобразует string-or-char, которое должно быть символом или строкой, в нижний регистр.
Когда string-or-char является строкой, эта функция возвращает новую строку, в которой каждый символ в аргументе, который находится в верхнем регистре, преобразуется в нижний регистр. Когда string-or-char является символом, эта функция возвращает соответствующий символ в нижнем регистре (целое число); если исходный символ находится в нижнем регистре или не является буквой, возвращаемое значение равно исходному символу.
(downcase "The cat in the hat") ⇒ "the cat in the hat" (downcase ?X) ⇒ 120
- Функция: upcase string-or-char
-
Эта функция преобразует string-or-char, которое должно быть символом или строкой, в верхний регистр.
Когда string-or-char является строкой, эта функция возвращает новую строку, в которой каждый символ в аргументе, который находится в нижнем регистре, преобразуется в верхний регистр. Когда string-or-char является символом, эта функция возвращает соответствующий символ в верхнем регистре (целое число); если исходный символ находится в верхнем регистре или не является буквой, возвращаемое значение равно исходному символу.
(upcase "The cat in the hat") ⇒ "THE CAT IN THE HAT" (upcase ?x) ⇒ 88
- Функция: capitalize string-or-char
-
Эта функция преобразует строки или символы в верхний регистр. Если string-or-char является строкой, функция возвращает новую строку, содержимое которой является копией string-or-char, в которой каждый элемент был преобразован в верхний регистр. Это означает, что первый символ каждого слова преобразуется в верхний регистр, а остальные — в нижний регистр.
Определение слова — это любая последовательность последовательных символов, которым назначен синтаксический класс составных элементов слова в текущей таблице синтаксиса (см. Таблицу синтаксических классов).
Когда 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
- Функция: upcase-initials string-or-char
-
Если string-or-char является строкой, эта функция преобразует первые буквы слов в строке string-or-char в верхний регистр, не изменяя другие символы. Она возвращает новую строку, содержимое которой является копией string-or-char, в которой первая буква каждого слова преобразована в верхний регистр.
Определение слова — это любая последовательность последовательных символов, которым назначен синтаксический класс составных элементов слова в текущей таблице синтаксиса (см. Таблицу синтаксических классов).
Когда аргумент функции
upcase-initialsявляется символом, результат функцииupcase-initialsсовпадает с результатом функцииupcase.(upcase-initials "The CAT in the hAt") ⇒ "The CAT In The HAt"
Обратите внимание, что преобразование регистра не является взаимно однозначным соответствием кодов символов, а длина результата может отличаться от длины аргумента. Кроме того, поскольку передача символа принуждает возвращаемый тип к символу, функции не могут выполнить правильную подстановку, и результат может отличаться от обработки строки из одного символа. Например:
(upcase "fi") ; note: single character, ligature "fi"
⇒ "FI"
(upcase ?fi)
⇒ 64257 ; i.e. ?fi
Чтобы избежать этого, символ необходимо сначала преобразовать в строку, используя функцию string, прежде чем передавать его в одну из функций преобразования регистра. Конечно, нельзя делать предположений о длине результата.
Отображение для таких специальных случаев взято из special-uppercase, special-lowercase и special-titlecase. См. Свойства символов.
См. Сравнение текстов для функций сравнения строк; некоторые из них игнорируют различия в регистре или могут в опциональном режиме игнорировать различия в регистре.
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/Case-Conversion.html