Метод Ruby, позволяющий сделать строку типа ‘Hello World’ похожей на ‘hello_world’

#ruby

#ruby

Вопрос:

Какой метод Ruby позволяет сделать строку, подобную Hello World быть похожей hello_world .

Комментарии:

1. 5 ответов и ни один не поддержал вопрос ts ts ts ts ts…

2. @coder_tim: Да! больше нет! 🙂

Ответ №1:

Вам не нужны помощники Rails. Вы можете сделать это на чистом ruby.

 'Hello World'.downcase.tr(' ', '_')
# => hello_world
  

Ответ №2:

Если вы хотите сделать это с помощью методов Rails, вы также можете сделать:

В Rails 4:

 "Hello World".parameterize('_')
=> "hello_world"
  

Или (в Rails 5):

 "Hello World".parameterize(separator: '_')
=> "hello_world"  
  

Я думаю, это то, о чем думал @DGM.

Ссылки на Rails 4: http://guides.rubyonrails.org/v4.2/active_support_core_extensions.html#parameterize
https://apidock.com/rails/String/parameterize

Ссылка на Rails 5: http://api.rubyonrails.org/classes/String.html#method-i-parameterize

Комментарии:

1. Работает и в Rails 3.2!

Ответ №3:

Это должно сделать это:

 'Hello World'.gsub(/( )/, '_').downcase!
  

Ответ №4:

Просто добавляю к другим ответам:

 'Hello World'.split.join('_').downcase
  => 'hello_world'
  

Ответ №5:

Да, все эти способы делают то, что вы хотите, без rails, но для ответа на фактический вопрос rails предоставляет underscore

http://api.rubyonrails.org/classes/ActiveSupport/Inflector.html#method-i-underscore

Комментарии:

1. Это преобразует переход из нижнего регистра в верхний регистр в символы подчеркивания, но преобразует ли это пробелы в недооценки?

2. да, плюс еще немного, на самом деле. посмотрите на источник, связанный с ним.

3. Я посмотрел на исходный код. Похоже, это не помогает.

4. хм, ты прав. что ж, тогда на поставленный вопрос невозможно ответить. 😉

5. Я отредактировал вопрос, чтобы отразить это; он более полезен как общий вопрос ruby.

Ответ №6:

 'Hello World'.sub(' ', '_').downcase!
=> 'hello_world'
  

Комментарии:

1. Эй, это не я отклонил ваш вопрос 🙂 Не голосуйте против меня только потому, что кто-то другой проголосовал против вас. Я думаю, что голосование против было из-за опечатки ‘doawncase’, потому что в противном случае ваш код работает.

2. Вам нужно использовать String#gsub , если вы хотите заменить несколько пробелов.

Ответ №7:

«Hello World».downcase.split.join(«_»)

Комментарии:

1. Вы также можете использовать метод Rails «подчеркивания»: «Hello World».tr(‘ ‘, «).подчеркивание

Ответ №8:

 str = 'Hello World'
str.downcase!.tr!(' ','_')
p str #=> hello_world
  

Ответ №9:

«Hello World».gsub(» «,»»»).подчеркивание