Ruby метод, чтобы сделать строку вроде Hello World похожей на hello_world - PullRequest
16 голосов
/ 19 апреля 2011

Что такое метод Ruby, чтобы сделать строку типа Hello World похожей на hello_world.

Ответы [ 9 ]

35 голосов
/ 19 апреля 2011

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

'Hello World'.downcase.tr(' ', '_')
# => hello_world
7 голосов
/ 09 мая 2017

Если вы хотите сделать это с помощью методов 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

3 голосов
/ 20 апреля 2011

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

'Hello World'.split.join('_').downcase
  => 'hello_world'
3 голосов
/ 19 апреля 2011

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

'Hello World'.gsub(/( )/, '_').downcase!
2 голосов
/ 19 апреля 2011
'Hello World'.sub(' ', '_').downcase!
=> 'hello_world'
1 голос
/ 19 апреля 2011

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

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

1 голос
/ 19 апреля 2011
str = 'Hello World'
str.downcase!.tr!(' ','_')
p str #=> hello_world
1 голос
/ 19 апреля 2011

"Hello World" .downcase.split.join ("_")

0 голосов
/ 09 мая 2017

"Hello World" .gsub ("", ""). Подчеркивание

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...