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 方法,即uncapitalizedecapitalize

【问题讨论】:

【参考方案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 取消首字母大写的主要内容,如果未能解决你的问题,请参考以下文章

word怎样取消句首字母大写

取消word 句首字母自动大写

取消word首字母大写

设置取消word英文首字母大写

word基础如何取消word首字母大写

Rails模型命名部分首字母缩写词