Что это делает?

#ruby-on-rails #ruby #regex

#ruby-on-rails #ruby #регулярное выражение

Вопрос:

 gsub(/^/, "t" * num)
  

Какой символ заменяется?

Ответ №1:

Никакой символ не заменяется, он просто вставляет num табуляции в начале, так что вы могли бы сказать, что он заменяет маркер нулевой ширины «начало строки». Кто бы это ни написал, было бы лучше, если бы было что-то более похожее на это:

 tabbed = "t" * num   original
  

Регулярное выражение действительно не является подходящим инструментом для простой конкатенации строк.

Уточнение: Если вы ожидаете, что ваша строка будет содержать несколько строк, то с помощью:

 gsub(/^/, "t" * num)
  

добавлять ко всем строкам табуляции в качестве префикса — разумное решение, менее шумное, чем разделение, добавление префиксов и повторное объединение. Если вы ожидаете иметь дело только с одной строкой в вашей строке, то лучшим выбором будет простая конкатенация строк.

Ответ №2:

^ означает «начало строки» в синтаксисе регулярных выражений, так что это позволит вставлять num символы табуляции в начале каждой строки. Технически можно сказать, что это заменяет пустую строку в начале каждой строки.