Czy jest jakaś gotowa funkcja, która konwertuje ciągi znaków wielbłąda na ciąg oddzielony podkreśleniem?
Chcę coś takiego:
"CamelCaseString".to_underscore
aby zwrócić „camel_case_string”.
...
ruby-on-rails
ruby
string
formatting
case-conversion
Daniel Cukier
źródło
źródło
Odpowiedzi:
ActiveSupport w Railsach dodaje podkreślenie do ciągu, używając:
Następnie możesz robić fajne rzeczy:
źródło
tr("-","_")
natr("- ","_")
(spacja dodana do pierwszego parametru), spowoduje to również spacje w podkreślenia. Poza tym nie sądzę, że musisz to uwzględnićself.
, a przynajmniej działa to dla mnie w Ruby 1.9.3.require 'active_support/core_ext/string'
Możesz użyć
Lub tylko
Oba sposoby opcji przyniosą
"camel_cased_name"
. Możesz sprawdzić więcej szczegółów tutaj .źródło
Jednoliniowa implementacja Ruby:
Więc
"SomeCamelCase".to_underscore # =>"some_camel_case"
źródło
/([^A-Z])([A-Z]+)/
zamiast tego rozważyć , aby obsłużyć"ALLCAPS"
->"allcaps"
zamiast"a_ll_ca_ps"
Istnieje wbudowana metoda Railsów o nazwie „podkreślenie”, której można użyć do tego celu
Metodę „podkreślenia” można zazwyczaj uznać za odwrotną do „camelize”
źródło
Oto jak to robi Rails :
źródło
Odbiornik przekonwertowany na skrzynkę węża: http://rubydoc.info/gems/extlib/0.9.15/String#snake_case-instance_method
To jest biblioteka wsparcia dla DataMapper i Merb. ( http://rubygems.org/gems/extlib )
źródło
Sprawdź skrzynię węża z Ruby Facets
Obsługiwane są następujące przypadki, jak pokazano poniżej:
Od: https://github.com/rubyworks/facets/blob/master/lib/core/facets/string/snakecase.rb
źródło
"Dumb Penguin's Egg".snakecase # => "dumb_penguin's_egg"
Krótki oneliner dla CamelCases, gdy masz również spacje (nie działa poprawnie, jeśli masz słowo pomiędzy małą literą początkową):
źródło
underscore
nie jest częścią rubyW przypadku, gdy ktoś szuka przypadku, gdy musi zastosować podkreślenie do łańcucha ze spacjami i chce przekonwertować je również na podkreślniki, możesz użyć czegoś takiego
Lub po prostu użyj .parameterize ('_'), ale pamiętaj, że ten jest przestarzały
źródło
Chciałbym to:
Łatka
String
klasy małpy . Istnieją klasy, które zaczynają się od dwóch lub więcej liter wielkimi literami.źródło
"\1_\2"
, aby'\1_\2'
inaczej będziesz skończyć ze"came\u0001_\u0002ase"
zamiast"camel_case"
jako Ruby 2.5 ... może inni również.