Есть ли какая-либо готовая функция, которая преобразует строки с верблюжьими символами в строку, разделенную подчеркиванием?
Я хочу что-то вроде этого:
"CamelCaseString".to_underscore
вернуть "camel_case_string".
...
ruby-on-rails
ruby
string
formatting
case-conversion
Даниэль Кукье
источник
источник
Ответы:
ActiveSupport от Rails добавляет подчеркивание к строке, используя следующее:
Тогда вы можете делать забавные вещи:
источник
tr("-","_")
наtr("- ","_")
(пробел добавлен к первому параметру), это также превратит пробелы в подчеркивания. Кроме того, я не думаю, что вам даже нужно включатьself.
, или, по крайней мере, это работает для меня под Ruby 1.9.3.require 'active_support/core_ext/string'
Ты можешь использовать
Или просто
Оба варианта пути дадут
"camel_cased_name"
. Вы можете проверить более подробную информацию здесь .источник
Однострочная реализация Ruby:
Так
"SomeCamelCase".to_underscore # =>"some_camel_case"
источник
/([^A-Z])([A-Z]+)/
вместо этого, чтобы обработать"ALLCAPS"
->"allcaps"
вместо"a_ll_ca_ps"
Существует встроенный метод Rails, который называется underscore и который вы можете использовать для этой цели.
Метод «подчеркивания» обычно можно рассматривать как инверсию «верблюда»
источник
Вот как это делает Rails :
источник
Приемник преобразован в корпус змеи: http://rubydoc.info/gems/extlib/0.9.15/String#snake_case-instance_method
Это библиотека поддержки для DataMapper и Merb. ( http://rubygems.org/gems/extlib )
источник
Проверьте змею от Ruby Facets
Следующие случаи обрабатываются, как показано ниже:
От: https://github.com/rubyworks/facets/blob/master/lib/core/facets/string/snakecase.rb
источник
"Dumb Penguin's Egg".snakecase # => "dumb_penguin's_egg"
Короткий oneliner для CamelCases, когда у вас также есть пробелы (не работает правильно, если у вас есть слово между маленькими начальными буквами):
источник
underscore
не является частью rubyВ случае, если кто-то ищет случай, когда ему нужно применить подчеркивание к строке с пробелами, и вы хотите также преобразовать их в подчеркивание, вы можете использовать что-то вроде этого
Или просто используйте .parameterize ('_'), но имейте в виду, что этот не рекомендуется
источник
Я хотел бы это:
Обезьянья нашивка
String
класса. Есть класс, который начинается с двух или более букв в верхнем регистре.источник
"\1_\2"
чтобы в'\1_\2'
противном случае вы будете в конечном итоге с"came\u0001_\u0002ase"
вместо ,"camel_case"
как Руби 2.5 ... может быть , другие , а также.