#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(» «,»»»).подчеркивание