Ruby on rails Ruby titleize正在删除连字符,如何覆盖?

Ruby on rails Ruby titleize正在删除连字符,如何覆盖?,ruby-on-rails,ruby,ruby-on-rails-3,ruby-on-rails-4,ruby-on-rails-3.2,Ruby On Rails,Ruby,Ruby On Rails 3,Ruby On Rails 4,Ruby On Rails 3.2,当我使用titleize时,它会删除连字符符号 q = ["2002-h2","2002-h1", "2000-h1", "2005-h2", "2000-h2", "2005-h1"] q.sort_by { |a| a }.collect{|u| u} => ["2000-h1", "2000-h2", "2002-h1", "2002-h2", "2005-h1", "2005-h2"] 我想要这种类型的 q.sort_by { |a| a }.collect{|u|

当我使用titleize时,它会删除连字符符号

 q = ["2002-h2","2002-h1", "2000-h1", "2005-h2", "2000-h2", "2005-h1"]

 q.sort_by { |a| a }.collect{|u| u}

 => ["2000-h1", "2000-h2", "2002-h1", "2002-h2", "2005-h1", "2005-h2"]
我想要这种类型的

 q.sort_by { |a| a }.collect{|u| u.titleize}

 => ["2000 H1", "2000 H2", "2002 H1", "2002 H2", "2005 H1", "2005 H2"]
我想要排序q值


如何解决这个问题?

它只有一个字母吗?那就把它翻成大写吧

 => ["2000-H1", "2000-H2", "2002-H1", "2002-H2", "2005-H1", "2005-H2"]

您可以编写得更短,因为
.sort_by{a | a}
返回的结果与
相同。sort
。collect{a | a.upcase}
返回的结果与
.map(&:upcase)


为什么使用titleize而不是upcase?
[1] pry(main)> "2000-h1".upcase
=> "2000-H1"
q = ["2002-h2","2002-h1", "2000-h1", "2005-h2", "2000-h2", "2005-h1"]

q.sort.map(&:upcase)

#=> ["2000-H1", "2000-H2", "2002-H1", "2002-H2", "2005-H1", "2005-H2"]