2.14. Поиск в строке

2.14. Поиск в строке

Помимо различных способов доступа к подстрокам, есть и другие методы поиска в строке. Метод index возвращает начальную позицию заданной подстроки, символа или регулярного выражения. Если подстрока не найдена, возвращается nil:

str = "Albert Einstein"

pos1 = str.index(?E)     # 7

pos2 = str.index("bert") # 2

pos3 = str.index(/in/)   # 8

pos4 = str.index(?W)     # nil

pos5 = str.index("bart") # nil

pos6 = str.index(/Wein/) # nil

Метод rindex начинает поиск с конца строки. Но номера позиций отсчитываются тем не менее от начала:

str = "Albert Einstein"

pos1 = str.rindex(?E)     # 7

pos2 = str.rindex("bert") # 2

pos3 = str.rindex(/in/)   # 13 (найдено самое правое соответствие)

pos4 = str.rindex(?W)     # nil

pos5 = str.rindex("bart") # nil

pos6 = str.rindex(/wein/) # nil

Метод include? сообщает, встречается ли в данной строке указанная подстрока или один символ:

str1 = "mathematics"

flag1 = str1.include? ?e        # true

flag2 = str1.include? "math"    # true

str2 = "Daylight Saving Time"

flag3 = str2.include? ?s        # false

flag4 = str2.include? "Savings" # false

Метод scan многократно просматривает строку в поисках указанного образца. Будучи вызван внутри блока, он возвращает массив. Если образец содержит несколько (заключенных в скобки) групп, то массив окажется вложенным:

str1 = "abracadabra"

sub1 = str1.scan(/а./)

# sub1 теперь равно ["ab","ас","ad","ab"]

str2 = "Acapulco, Mexico"

sub2 = str2.scan(/(.)(c.)/)

# sub2 теперь равно [ ["A","ca"], ["l","со"], ["i","со"] ]

Если при вызове задан блок, то метод поочередно передает этому блоку найденные значения:

str3 = "Kobayashi"

str3.scan(/["aeiou]+[aeiou]/) do |x|

print "Слог: #{x} " end

Этот код выводит такой результат:

Слог: Ko

Слог: ba

Слог: уа

Слог: shi

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Яндекс. Поиск – быстрый поиск документов

Из книги Microsoft Office автора Леонтьев Виталий Петрович

Яндекс. Поиск – быстрый поиск документов Документы, как известно, имеют премерзкое свойство накапливаться. И чем больше документов, тем труднее в их залежах найти нужный. Электронные документы здесь не слишком отличаются от бумажных. Проблема места для хранения, правда,


Команда "Q" в адресной строке для получения статьи из Базы Знаний от Майкрософт

Из книги Реестр Windows автора Климов Александр

Команда "Q" в адресной строке для получения статьи из Базы Знаний от Майкрософт Данная настройка будет полезна разработчикам. Порой в различных публикациях встречаются ссылки на определенный идентификатор статьи Базы Знаний (Knowledge Base). Можно быстро получить доступ к этой


Ввод запроса в строке поиска

Из книги Windows Vista без напряга автора Жвалевский Андрей Валентинович

Ввод запроса в строке поиска Надеемся, вы еще не забыли, где находится строка поиска? Да-да, в правом верхнем углу окна папки. Поэтому если хотите найти какой-нибудь файл или папку, просто откройте окно первой попавшейся папки (например, личной) и введите в строку поиска имя


Ввод запроса в строке поиска

Из книги Windows Vista автора Вавилов Сергей

Ввод запроса в строке поиска Пользоваться строкой поиска очень просто: откройте папку, в которой нужно найти файл, и наберите в строке поиска имя файла. Уже после ввода первых символов имени начнется фильтрация содержимого папки и в области просмотра отобразятся объекты,


2.28. Подсчет числа символов в строке

Из книги Программирование на языке Ruby [Идеология языка, теория и практика применения] автора Фултон Хэл

2.28. Подсчет числа символов в строке Метод count подсчитывает число вхождений в строку символов из заданного набора:s1 = "abracadabra"a = s1.count("с")   # 1b = s1.count("bdr") # 5Строковый параметр ведет себя как простое регулярное выражение. Если он начинается с символа ^, то берется дополнение к


14.2. Флаги и аргументы в командной строке

Из книги XSLT автора Хольцнер Стивен

14.2. Флаги и аргументы в командной строке Слухи о кончине командной строки сильно преувеличены. Хоть мы и живем в век графических интерфейсов, ежедневно тысячи и тысячи программистов по тем или иным причинам обращаются к командным утилитам.Мы уже говорили, что корнями


14.2.1. Разбор флагов в командной строке

Из книги Ководство автора Лебедев Артём Андреевич

14.2.1. Разбор флагов в командной строке Для разбора командной строки чаще всего применяется библиотека getoptlong (библиотека getopts.rb, обладающая менее развитой функциональностью, считается устаревшей). Она понимает однобуквенные и длинные флаги и распознает двойной дефис (--)


§ 50. О статусной строке

Из книги VBA для чайников автора Каммингс Стив

§ 50. О статусной строке — Каков ваш статус, Лена? Проще говоря, каков ваш социум эр актум? С. Довлатов. Наши 22 апреля 2000Произошло следующее: в машине спидометр закрыт газетой; на мобильном телефоне дисплей залеплен изолентой; телевизор не показывает, на какой канал


Глава 12 Поиск с предпочтением: эвристический поиск

Из книги Linux: Полное руководство автора Колисниченко Денис Николаевич

Глава 12 Поиск с предпочтением: эвристический поиск Поиск в графах при решении задач, как правило, невозможен без решения проблемы комбинаторной сложности, возникающей из-за быстрого роста числа альтернатив. Эффективным средством борьбы с этим служит эвристический


Объявление нескольких переменных в одной строке

Из книги Профессиональный поиск в Интернете автора Кутовенко Алексей

Объявление нескольких переменных в одной строке В одной строке программного кода можно объявить и несколько переменных. Ключевое слово Dim печатается при этом только один раз, а переменные разделяются запятыми.Но не забывайте указать тип данных для каждой из переменных в


Глава 3 Работаем в командной строке

Из книги Linux и UNIX: программирование в shell. Руководство разработчика. автора Тейнсли Дэвид

Глава 3 Работаем в командной строке 3.1. Как устроен Linux: ядро и процессы Главная, постоянно находящаяся в оперативной памяти, часть ОС Linux называется ядром (Kernel). Ядро ОС обрабатывает прерывания от устройств, выполняет запросы системных процессов и пользовательских


Поиск на научных сайтах с использованием платформы Flexum «Поиск по научным сайтам»

Из книги C++ для начинающих автора Липпман Стенли

Поиск на научных сайтах с использованием платформы Flexum «Поиск по научным сайтам» Тема научного поиска не прошла мимо разработчиков персональных поисковиков. Подробному рассказу о возможностях таких поисковых систем посвящена отдельная глава нашей книги (см. главу 6).