Есть ли Regex Delete в Ruby? - PullRequest
11 голосов
/ 01 апреля 2012

Все мои строки delete с регулярным выражением используют gsub, есть ли более короткий путь?string.gsub(/\A.*\//,'')

Ответы [ 3 ]

5 голосов
/ 01 апреля 2012

Вместо этого вы можете указать часть строки, которую хотите keep . , .

string[/[^\/]*$/]
5 голосов
/ 01 апреля 2012

Один из способов - добавить свои собственные короткие методы:

class String

  def del(regexp)
    gsub(regexp,'')
  end

  def del!(regexp)
    gsub!(regexp,'')
  end

end

Обычно этот код помещается в каталог lib /, например lib / string-extensions.rb

Обращает на себя внимание, что некоторым программистам это действительно не нравится, потому что это исправление обезьян. Мне лично нравится это для проектов, потому что это облегчает понимание кода - как только у меня есть метод "del", я быстро вижу, что вызовы к нему просто удаляют регулярное выражение.

3 голосов
/ 01 апреля 2012

Я так не думаю.

String :: delete удаляет символы и не соответствует регулярному выражению, это совершенно другой подход.

Единственный способ сделать эту линию "короче", я могу использовать string.gsub!(/\A.*\//,'') (обратите внимание на взрыв).

Это путь, я думаю:)

...