Программирование на языке Ruby
Программирование на языке Ruby читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
sub1 = str1[-3,3] # "иса"str2 = "В Зазеркалье"sub3 = str2[-8,6] # "зеркал"Можно задавать диапазон. Он интерпретируется как диапазон позиций внутри строки. Диапазон может включать отрицательные числа, но в любом случае нижняя граница не должна быть больше верхней. Если диапазон «инвертированный» или нижняя граница оказывается вне строки, возвращается
nilstr = "Уинстон Черчилль"sub1 = str[8..13] # "Черчил"sub2 = str[-4..-1] # "илль"sub3 = str[-1..-4] # nilsub4 = str[25..30] # nilЕсли задано регулярное выражение, то возвращается строка, соответствующая образцу. Если соответствия нет, возвращается
nilstr = "Alistair Cooke"sub1 = str[/1..t/] # "list"sub2 = str[/s.*r/] # "stair"sub3 = str[/foo/] # nilЕсли задана строка, то она и возвращается, если встречается в качестве подстроки в исходной строке; в противном случае возвращается
nilstr = "theater"sub1 = str["heat"] # "heat"sub2 = str["eat"] # "eat"sub3 = str["ate"] # "ate"sub4 = str["beat"] # nilsub5 = str["cheat"] # nilНаконец, в тривиальном случае, когда в качестве индекса задано одно число
Fixnumnilstr = "Aaron Burr"ch1 = str[0] # 65ch1 = str[1] # 97ch3 = str[99] # nilВажно понимать, что все описанные выше способы могут использоваться не только для доступа к подстроке, но и для ее замены:
str1 = "Шалтай-Болтай"str1[7,3] = "Хва" # "Шалтай-Хватай"str2 = "Алиса"str2[-3,3] = "ександра" # "Александра"str3 = "В Зазеркалье"str3[-9,9] = "стеколье" # "В Застеколье"str4 = "Уинстон Черчилль"str4[8..11] = "X" # "Уинстон Хилль"str5 = "Alistair Cooke"str5[/e$/] ="ie Monster" # "Alistair Cookie Monster"str6 = "theater"str6["er"] = "re" # "theatre"str7 = "Aaron Burr"str7[0] = 66 # "Baron Burr"Присваивание выражения, равного
nil2.13. Подстановка в строках
Мы уже видели, как выполняются простые подстановки. Методы
subgsubsub!gsub!Метод
subs1 = "spam, spam, and eggs"s2 = s1.sub(/spam/,"bacon") # "bacon, spam, and eggs"s3 = s2.sub(/(w+), (w+),/,'2, 1,') # "spam, bacon, and eggs"s4 = "Don't forget the spam."s5 = s4.sub(/spam/) { |m| m.reverse } # "Don't forget the maps."s4.sub!(/spam/) { |m| m.reverse }# s4 теперь равно "Don't forget the maps."Как видите, в подставляемой строке могут встречаться специальные символы
12$&$MATCHЕсли употребляется форма с блоком, то допустимы и специальные переменные. Если вам нужно лишь получить сопоставленную с образцом строку, то она будет передана в блок как параметр. Если эта строка вообще не нужна, то параметр, конечно, можно опустить.
Метод
gsubsubs5 = "alfalfa abracadabra"s6 = s5.gsub(/a[bl]/,"xx")# "xxfxxfa xxracadxxra"s5.gsub!(/[lfdbr]/) { |m| m.upcase + "-" }# s5 теперь равно "aL-F-aL-F-a aB-R-acaD-aB-R-a"Метод
Regexp.last_match$&$MATCH2.14. Поиск в строке
Помимо различных способов доступа к подстрокам, есть и другие методы поиска в строке. Метод
indexnilstr = "Albert Einstein"pos1 = str.index(?E) # 7
