PERL: БИБЛИОТЕКА ПРОГРАММИСТА


PERL: БИБЛИОТЕКА ПРОГРАММИСТА - стр. 53


> Смотри также---------------------------------------------------------------------------------------------

Описание оператора s/// в perlre(l) и perlop(l); описание функции eval в perlfunc(l). Аналогичное использование подстановок встречается в рецеп­те 20.9.

1.9. Преобразование регистра

Проблема

Строку с символами верхнего регистра необходимо преобразовать в нижний ре­гистр, или наоборот.

Решение

Воспользуйтесь функциями 1с и ис со служебными командами \1_ и \U:

use locale;         й Необходимо в 5.004 и выше

= uc($little);      й "bo peep" -> "ВО PEEP" Slittle = lc($big);      й "JOHN'   -> "john"


44   Глава 1 • Строки

$big = "Vmittle";                   #   'bo peep' -> "BO PEEP"

Slittle = "\L$big";                  # "JOHN"        -> "john"

Для замены отдельного символа используйте функции  lcfirst и ucfirst со служебными командами \1 и \и:

$big = '

¦\u$little";

#

"bo"

-> "Bo"

$little

= "\l$big";

#

"BoPeep»

-> "boPeep"

Комментарий

Функции и служебные команды выглядят по-разному, но делают одно и то же. Допускается указание регистра как первого символа, так и целой строки. Вы даже можете форсировать применение верхнего регистра для первого символа и ниж­него — для всех остальных.

Встречая директиву use locale, функции преобразования регистра Perl и ме­ханизм поиска по шаблону начинают «уважать» правила вашего национально­го языка. Благодаря ей становится возможным поиск символов с диакритиче­скими элементами и т. д. Одна из распространенных ошибок — преобразование регистра с помощью t г///. Да, мы хорошо помним, что в одном из старых изданий этой книги рекомендовали использовать tr/A-Z/a-z/. В свое оправдание можем лишь сказать, что в то время другого способа не существовало. Такое решение работает не всегда, поскольку из него выпадают все символы с умляутами, седи­лями и прочими диакритическими элементами, встречающимися во многих язы­ках. Команды преобразования регистра ис и \U понимают эти символы и обес­печивают их правильное преобразование (по крайней мере, если в программе присутствует директива use locale). Исключение составляет немецкий язык; символ Я в верхнем регистре выглядит как SS, но в Perl такое преобразование не поддерживается.




Начало  Назад  Вперед



Книжный магазин