Управление регистром
Tagged:

В классе string есть множество методов управления регистром. В этом разделе мы
приведем их краткий обзор.
Метод downcase переводит символы всей строки в нижний регистр, а метод
upcase - в верхний:
si = "Бостонское чаепитие"
s2 = si.downcase # "бостонское чаепитие"
s3 = s2.upcase # "БОСТОНСКОЕ ЧАЕПИТИЕ"
Метод capitalize представляет первый символ строки в верхнем регистре, а
все остальные - в нижнем:
s4 = si.capitalize # "Бостонское чаепитие"
s5 = s2.capitalize # "Бостонское чаепитие"
s6 = s3.capitalize # "Бостонское чаепитие"
Метод swapcase изменяет регистр каждой буквы на противоположный:
s7 = "ЭТО БЫВШИЙ попугай."
s8 = s7.swapcase # "это бывший ПОПУГАЙ."
Начиная с версии 1.8, в язык Ruby включен метод casecmp, который работает
аналогично стандартному методу <=>, но игнорирует регистр:
nl = "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).