Gibt es eine Bereitschaftsfunktion, die Kamelfallstrings in durch Unterstriche getrennte Strings umwandelt?
Ich möchte so etwas:
"CamelCaseString".to_underscore
um "camel_case_string" zurückzugeben.
...
ruby-on-rails
ruby
string
formatting
case-conversion
Daniel Cukier
quelle
quelle
Antworten:
ActiveSupport von Rails fügt dem String den folgenden Unterstrich hinzu:
Dann kannst du lustige Sachen machen:
quelle
tr("-","_")
zutr("- ","_")
(Leerzeichen zum ersten Parameter hinzugefügt) wechseln, werden Leerzeichen ebenfalls in Unterstriche umgewandelt. Ich glaube auch nicht, dass Sie es überhaupt aufnehmen müssenself.
, oder zumindest funktioniert es für mich unter Ruby 1.9.3.require 'active_support/core_ext/string'
Sie können verwenden
Oder nur
Beide Optionen ergeben sich
"camel_cased_name"
. Weitere Details können Sie hier überprüfen .quelle
Einzeilige Ruby-Implementierung:
So
"SomeCamelCase".to_underscore # =>"some_camel_case"
quelle
/([^A-Z])([A-Z]+)/
stattdessen überlegen , um"ALLCAPS"
->"allcaps"
statt"a_ll_ca_ps"
Es gibt eine in Rails integrierte Methode namens "Unterstrich", die Sie für diesen Zweck verwenden können
Die "Unterstrich" -Methode kann typischerweise als Umkehrung von "Kamelisierung" betrachtet werden.
quelle
So macht es Rails :
quelle
Empfänger in Schlangenfall konvertiert: http://rubydoc.info/gems/extlib/0.9.15/String#snake_case-instance_method
Dies ist die Support-Bibliothek für DataMapper und Merb. ( http://rubygems.org/gems/extlib )
quelle
Schauen Sie sich den Schlangenkoffer von Ruby Facets an
Die folgenden Fälle werden wie folgt behandelt:
Von: https://github.com/rubyworks/facets/blob/master/lib/core/facets/string/snakecase.rb
quelle
"Dumb Penguin's Egg".snakecase # => "dumb_penguin's_egg"
Kurzer Oneliner für CamelCases, wenn auch Leerzeichen enthalten sind (funktioniert nicht richtig, wenn Sie ein Wort dazwischen mit einem kleinen Anfangsbuchstaben haben):
quelle
underscore
ist nicht Teil von RubyFalls jemand nach einem Fall sucht, in dem er Unterstriche auf Zeichenfolgen mit Leerzeichen anwenden und diese auch in Unterstriche konvertieren möchte, können Sie so etwas verwenden
Oder verwenden Sie einfach .parameterize ('_'), aber denken Sie daran, dass dieses veraltet ist
quelle
Das würde mir gefallen:
Affenfeld der
String
Klasse. Es gibt Klassen, die mit zwei oder mehr Buchstaben in Großbuchstaben beginnen.quelle
"\1_\2"
,'\1_\2'
sonst erhalten Sie"came\u0001_\u0002ase"
statt"camel_case"
Ruby 2.5 ... vielleicht auch andere.