【发布时间】:2011-05-27 07:39:11
【问题描述】:
我正在运行 Rails 2.3.2。
如何将"Cool" 转换为"cool"?我知道"Cool".downcase 有效,但是是否有与capitalize 相反的Ruby/Rails 方法,即uncapitalize 或decapitalize?
【问题讨论】:
标签: ruby-on-rails ruby lowercase capitalize
我正在运行 Rails 2.3.2。
如何将"Cool" 转换为"cool"?我知道"Cool".downcase 有效,但是是否有与capitalize 相反的Ruby/Rails 方法,即uncapitalize 或decapitalize?
【问题讨论】:
标签: ruby-on-rails ruby lowercase capitalize
没有真正的大写反转,但我认为underscore 很接近。
"CoolCat".underscore #=> "cool_cat"
"cool_cat".capitalize #=> "Cool_cat"
"cool_cat".camelize #=> "CoolCat"
编辑: underscore 当然是 camelize 的倒数,而不是 capitalize。
【讨论】:
capitalize 没有逆元,但您可以随意滚动:
class String
def uncapitalize
self[0, 1].downcase + self[1..-1]
end
end
【讨论】:
/config/initializers 中的新文件可能是有意义的
如果你使用 Ruby Facets,你可以将第一个字母小写:
https://github.com/rubyworks/facets/blob/master/lib/core/facets/string/uppercase.rb
【讨论】:
还有:
"coolat_cat".camelize(:lower) # => "coolCat"
【讨论】:
camelize(uppercase_first_letter = true) apidock.com/rails/v4.2.7/String/camelize
self 驼峰化处理并采用符号:upper 或:lower。我认为 apidock 文档有误。
您也可以使用简单的sub:
"Cool".sub(/^[A-Z]/) {|f| f.downcase }
【讨论】:
"Cool".sub(/^[A-Z]/, &:downcase)就够了
"CoolTrick".sub(/^[[:alpha:]]/) {|f| f.downcase }
str = "Directly to the south"
str[0] = str[0].downcase
puts str
#=> "directly to the south"
【讨论】:
您可以使用点击(使其适合一行):
"JonSkeet".tap { |e| e[0] = e[0].downcase } # => "jonSkeet"
【讨论】:
capitalize 的倒数称为swapcase:
"Cool Cat".swapcase #=> "cOOL cAT"
【讨论】:
name = "Viru"
name = name.slice(0).downcase + name[1..(name.length)]
【讨论】:
试试这个
'Cool'.sub(/^([A-Z])/) { $1.tr!('[A-Z]', '[a-z]') }
https://apidock.com/ruby/XSD/CodeGen/GenSupport/uncapitalize
【讨论】: