Domanda

Sono sicuro che questo è un compito facile per voi geek:

Dire che ho una stringa "ThisIsMyString" e voglio formattarlo come "this_is_my_string" utilizzando Ruby.

Come faccio a farlo?

Matt

È stato utile?

Soluzione

Se si ha accesso a ActiveSupport (come in Rails, ma utilizzabile esternamente) è possibile utilizzare il metodo underscore nel modulo inflettore .

"ClassName".underscore # => class_name

Altri suggerimenti

classe String    DEF to_under_score       (Gsub (/ [A-Z]) {| p | "_" + p.downcase}) [1 ..- 1]    fine end

"MyTestCase" .to_under_score => "my_test_case"

http://www.ruby-forum.com/topic/113697# 265696

rubino sfaccettature ha una funzione per fare questo: String # sottolineatura. Ecco il fonte di esso:

  def underscore
    gsub(/::/, '/').
    gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
    gsub(/([a-z\d])([A-Z])/,'\1_\2').
    tr("-", "_").
    downcase
  end

Se si ha accesso a ActiveSupport dalla Rails di progetto, è così semplice come

require 'activesupport'
"ThisIsMyString".underscore
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top