0Pricing
Ruby Academy · Урок

Подстановка

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 — локальная установка не требуется.

Все уроки этого курса

  1. Литералы регулярных выражений
  2. Сопоставление и захват
  3. Подстановка
  4. Именованные группы и якоря
← Назад к Ruby Academy