Книга: Программирование на языке Ruby

2.11. Управление регистром

2.11. Управление регистром

В классе String есть множество методов управления регистром. В этом разделе мы приведем их краткий обзор.

Метод downcase переводит символы всей строки в нижний регистр, а метод upcase — в верхний:

s1 = "Бостонское чаепитие"
s2 = s1.downcase # "бостонское чаепитие"
s3 = s2.upcase   # "БОСТОНСКОЕ ЧАЕПИТИЕ"

Метод capitalize представляет первый символ строки в верхнем регистре, а все остальные - в нижнем:

s4 = s1.capitalize # "Бостонское чаепитие"
s5 = s2.capitalize # "Бостонское чаепитие"
s6 = s3.capitalize # "Бостонское чаепитие"

Метод swapcase изменяет регистр каждой буквы на противоположный:

s7 = "ЭТО БЫВШИЙ попугай."
s8 = s7.swapcase # "это бывший ПОПУГАЙ."

Начиная с версии 1.8, в язык Ruby включен метод casecmp, который работает аналогично стандартному методу <=>, но игнорирует регистр:

n1 = "abc".casecmp("xyz") # -1
n2 = "abc".casecmp("XYZ") # -1
n3 = "ABC".casecmp("xyz") # -1
n4 = "ABC".casecmp("abc") # 0
n5 = "xyz".casecmp("abc") # 1

У каждого из перечисленных методов имеется аналог, осуществляющий модификацию «на месте» (upcase!, downcase!, capitalize!, swapcase!).

He существует встроенных методов, позволяющих узнать регистр буквы, но это легко сделать с помощью регулярных выражений:

if string=~ /[a-z]/
 puts "строка содержит символы в нижнем регистре"
end
if string =~ /[A-Z]/
 puts "строка содержит символы в верхнем регистре"
end
if string =~ /[A-Z]/ and string =~ /а-z/
 puts "строка содержит символы в разных регистрах"
end
if string[0..0] =~ /[A-Z]/
 puts "строка начинается с прописной буквы"
end

Отметим, что все эти методы не учитывают местные особенности (locale).

Оглавление книги

Оглавление статьи/книги

Генерация: 1.125. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз