Программирование на языке Ruby
Программирование на языке Ruby читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
name = "Боб"age =28str = sprintf("Привет, %s... Похоже, тебе %d лет.", name, age)Спрашивается, зачем нужен этот метод, если можно просто интерполировать значения в строку с помощью конструкции
#{expr}sprintfstr = sprintf("%-20s %3d", name, age)В классе
String%str = "%-20s %3d" % [name, age] # To же, что и вышеИмеются также методы
ljustrjustcenterstr = "Моби Дик"s1 = str.ljust(12) # "Моби Дик"s2 = str.center(12) # " Моби Дик "s3 = str.rjust(12) # " Моби Дик"Можно задать и второй параметр, который интерпретируется как строка заполнения (при необходимости она будет урезана):
str = "Капитан Ахав"s1 = str.ljust(20,"+") # "Капитан Ахав++++++++"s2 = str.center(20,"-") # "----Капитан Ахав----"s3 = str.rjust(20,"123") # "12312312Капитан Ахав"2.10. Строки в качестве объектов ввода/вывода
Помимо методов
sprintfscanfStringIOИз-за сходства с объектом
IO2.11. Управление регистром
В классе
StringМетод
downcaseupcases1 = "Бостонское чаепитие"s2 = s1.downcase # "бостонское чаепитие"s3 = s2.upcase # "БОСТОНСКОЕ ЧАЕПИТИЕ"Метод
capitalizes4 = s1.capitalize # "Бостонское чаепитие"s5 = s2.capitalize # "Бостонское чаепитие"s6 = s3.capitalize # "Бостонское чаепитие"Метод
swapcases7 = "ЭТО БЫВШИЙ попугай."s8 = s7.swapcase # "это бывший ПОПУГАЙ."Начиная с версии 1.8, в язык Ruby включен метод
casecmp<=>n1 = "abc".casecmp("xyz") # -1n2 = "abc".casecmp("XYZ") # -1n3 = "ABC".casecmp("xyz") # -1n4 = "ABC".casecmp("abc") # 0n5 = "xyz".casecmp("abc") # 1У каждого из перечисленных методов имеется аналог, осуществляющий модификацию «на месте» (
upcase!downcase!capitalize!swapcase!He существует встроенных методов, позволяющих узнать регистр буквы, но это легко сделать с помощью регулярных выражений:
if string=~ /[a-z]/ puts "строка содержит символы в нижнем регистре"endif string =~ /[A-Z]/ puts "строка содержит символы в верхнем регистре"endif string =~ /[A-Z]/ and string =~ /а-z/ puts "строка содержит символы в разных регистрах"endif string[0..0] =~ /[A-Z]/ puts "строка начинается с прописной буквы"endОтметим, что все эти методы не учитывают местные особенности (locale).
2.12. Вычленение и замена подстрок
В Ruby к подстрокам можно обращаться разными способами. Обычно применяются квадратные скобки, как для массивов, но внутри скобок может находиться пара объектов класса
FixnumЕсли задана пара объектов класса
Fixnumstr = "Шалтай-Болтай"sub1 = str[7,4] # "Болт"sub2 = str[7,99] # "Болтай" (выход за границу строки допускается)sub3 = str[10,-4] # nil (отрицательная длина)Важно помнить, что это именно смещение и длина (число символов), а не начальное и конечное смещение.
Если индекс отрицателен, то отсчет ведется от конца строки. В этом случае индекс начинается с единицы, а не с нуля. Но при нахождении подстроки указанной длины все равно берутся символы правее, а не левее начального:
str1 = "Алиса"
