Spec-Zone.ru › Elisp

Преобразование регистра в 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

Spec-Zone.ru

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