Подстановка
gsub с шаблонами
«Подстановка» — бесплатный урок Ruby Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Ruby Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Ruby Academy содержит 4 уроков всего.
Замена текста с помощью sub
String#sub заменяет первое совпадение шаблона строкой-заменой. Исходная строка не изменяется: возвращается новая строка.
s = 'hello world'
puts(s.sub(/world/, 'Ruby'))
puts sЗамена всех совпадений с помощью gsub
gsub означает глобальную замену. Он заменяет каждое совпадение, а не только первое.
puts('a-b-c-d'.gsub(/-/, '_'))
puts('one two two'.gsub(/two/, 'three'))Шаблоны при замене
Первым аргументом gsub может быть полноценное регулярное выражение. Это позволяет сопоставлять гибкие шаблоны, а не только фиксированный текст.
puts('id42 id7 id100'.gsub(/\d+/, '#'))
puts('a1b2c3'.gsub(/[0-9]/, '*'))Обратные ссылки в строке замены
В строке замены можно обращаться к захваченным группам с помощью \1, \2 и так далее.
puts('2026-05-30'.gsub(/(\d{4})-(\d{2})-(\d{2})/, '\3/\2/\1'))Обратная ссылка на всё совпадение
\0 или \& обозначает весь совпавший текст; это удобно для оборачивания совпадений.
puts('cat dog'.gsub(/\w+/, '[\0]'))Блочная форма gsub
gsub принимает блок. В него передаётся каждое совпадение, а возвращаемое блоком значение становится заменой. Это позволяет вычислять замены динамически.
result = 'a1 b2 c3'.gsub(/\d/) { |d| (d.to_i * 10).to_s }
puts resultПеревод совпадений в верхний регистр
Блочная форма упрощает преобразования. В этом примере первая буква каждого слова становится прописной.
title = 'the great escape'.gsub(/\w+/) { |w| w.capitalize }
puts titleЗамена с помощью хеша
Если передать хеш вторым аргументом, каждое совпадение используется как ключ, а затем заменяется соответствующим значением. Это удобно для таблиц соответствий при переводе.
map = { 'cat' => 'kedi', 'dog' => 'kopek' }
puts('cat and dog'.gsub(/cat|dog/, map))Варианты с изменением на месте
sub! и gsub! изменяют строку на месте и возвращают nil, если изменений не произошло.
s = 'hello'
s.gsub!(/l/, 'L')
puts s
puts(s.gsub!(/z/, 'x').inspect)Удаление текста
Чтобы удалить совпадения, замените их пустой строкой.
puts('h e l l o'.gsub(/\s/, ''))
puts('price: $42'.gsub(/[^0-9]/, ''))Обратные ссылки на именованные группы
Группам можно присвоить имена с помощью (?<name>...), а в строке замены обращаться к ним через \k<name>.
out = 'John Smith'.gsub(/(?<first>\w+) (?<last>\w+)/, '\k<last>, \k<first>')
puts outБыстрая проверка
В чём разница между sub и gsub?
Итоги: замена
Вы научились преобразовывать строки с помощью шаблонов:
subзаменяет первое совпадение, аgsub— все совпадения- Обратные ссылки
\1,\&в строках замены - Блочная форма вычисляет замены динамически
- Аргумент-хеш сопоставляет совпадения со значениями
sub!/gsub!изменяют строку на месте
puts('foo bar baz'.gsub(/b\w+/) { |w| w.upcase })Часто задаваемые вопросы
Урок «Подстановка» бесплатный?
Да — полный текст урока «Подстановка» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Ruby Academy, подпишись на CoddyKit PRO. Курс Ruby Academy содержит 4 уроков всего.
Чему я научусь в уроке «Подстановка»?
gsub с шаблонами Ты практикуешь Ruby Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Ruby Academy?
Предыдущий опыт не требуется. Ruby Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Подстановка»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Ruby Academy?
Да. Каждый урок Ruby Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.