Ruby on Rails 取消首字母大写
Posted
技术标签:
【中文标题】Ruby on Rails 取消首字母大写【英文标题】:Ruby on Rails uncapitalize first letter 【发布时间】:2011-05-27 07:39:11 【问题描述】:我正在运行 Rails 2.3.2。
如何将"Cool"
转换为"cool"
?我知道"Cool".downcase
有效,但是是否有与capitalize
相反的Ruby/Rails 方法,即uncapitalize
或decapitalize
?
【问题讨论】:
【参考方案1】:没有真正的大写反转,但我认为underscore
很接近。
"CoolCat".underscore #=> "cool_cat"
"cool_cat".capitalize #=> "Cool_cat"
"cool_cat".camelize #=> "CoolCat"
编辑: underscore
当然是 camelize
的倒数,而不是 capitalize
。
【讨论】:
【参考方案2】:capitalize
没有逆元,但您可以随意滚动:
class String
def uncapitalize
self[0, 1].downcase + self[1..-1]
end
end
【讨论】:
我们应该在哪里添加这个方法? @Vadorequest 方法?将其添加到String类上,如答案所示。 在标准的 Rails 应用程序中,将其添加到/config/initializers
中的新文件可能是有意义的
@Ajedi32 好吧,这对你来说可能很明显,但对我来说不是。谢谢戴夫。【参考方案3】:
如果你使用 Ruby Facets,你可以将第一个字母小写:
https://github.com/rubyworks/facets/blob/master/lib/core/facets/string/uppercase.rb
【讨论】:
【参考方案4】:还有:
"coolat_cat".camelize(:lower) # => "coolCat"
【讨论】:
这确实需要 ActiveRecord tho:apidock.com/rails/String/camelize(阅读问题后,它确实声明它已经与 Rails 一起使用) @Ian Vaughan:更准确地说是 ActiveSupport 他们在 v4.2.7 左右更新了方法签名。它现在需要一个布尔值,例如camelize(uppercase_first_letter = true)
apidock.com/rails/v4.2.7/String/camelize
@animatedgif 有两种方法,Inflector.#camelize(term, uppercase_first_letter) 采用一个字符串进行驼峰化处理和一个布尔值,String#camelize(first_letter) 将self
驼峰化处理并采用符号:upper
或:lower
。我认为 apidock 文档有误。
绝对是一个 Rails 的东西,但该死的很好!【参考方案5】:
您也可以使用简单的sub
:
"Cool".sub(/^[A-Z]/) |f| f.downcase
【讨论】:
注意"Cool".sub(/^[A-Z]/, &:downcase)
就够了
"CoolTrick".sub(/^[[:alpha:]]/) |f| f.downcase
【参考方案6】:
str = "Directly to the south"
str[0] = str[0].downcase
puts str
#=> "directly to the south"
【讨论】:
这不仅是最易读的方法,也是迄今为止性能最高的方法,即使你用某种三元运算符或 if 语句保护它以确保 str 不为零。这应该是公认的答案。谢谢@boulder_ruby【参考方案7】:您可以使用点击(使其适合一行):
"JonSkeet".tap |e| e[0] = e[0].downcase # => "jonSkeet"
【讨论】:
【参考方案8】:capitalize
的倒数称为swapcase
:
"Cool Cat".swapcase #=> "cOOL cAT"
【讨论】:
【参考方案9】:name = "Viru"
name = name.slice(0).downcase + name[1..(name.length)]
【讨论】:
【参考方案10】:试试这个
'Cool'.sub(/^([A-Z])/) $1.tr!('[A-Z]', '[a-z]')
https://apidock.com/ruby/XSD/CodeGen/GenSupport/uncapitalize
【讨论】:
以上是关于Ruby on Rails 取消首字母大写的主要内容,如果未能解决你的问题,请参考以下文章