【问题标题】:Capitalize lowercase letters in Ruby On Rails在 Ruby On Rails 中将小写字母大写
【发布时间】:2014-11-23 03:38:55
【问题描述】:

Rails 是否带有一些帮助方法来将每个单词的首字母转换为大写?

这样

"my house is yellow"

变成

"My House Is Yellow"

【问题讨论】:

  • 对不起。我发现这个方法在这里放置'一二三四'.split.map(&:capitalize).join('')
  • 虽然每个单词都可以大写,但这不一定会导致句子大写正确。

标签: ruby-on-rails ruby ruby-on-rails-4 ruby-on-rails-3.2


【解决方案1】:

ActiveSupport 提供了一个titleize 函数:

'my house is yellow'.titleize
 => "My House Is Yellow"

【讨论】:

  • 这是最好的答案,即使我的答案已被接受。但我会要求不接受我的回答并接受这个。
【解决方案2】:
1.9.3-p547 :037 > string="my house is yellow"
 => "my house is yellow" 
1.9.3-p547 :038 > string=string.split(' ')
 => ["my", "house", "is", "yellow"] 
1.9.3-p547 :039 > string.each do |a|
1.9.3-p547 :040 >     a.capitalize!
1.9.3-p547 :041?>   end
 => ["My", "House", "Is", "Yellow"] 
1.9.3-p547 :042 > string
 => ["My", "House", "Is", "Yellow"] 
1.9.3-p547 :044 > string.join(' ')
 => "My House Is Yellow" 
1.9.3-p547 :045 > 

【讨论】:

    【解决方案3】:

    在一个命令中没有明确的方法可以做到这一点。不过你可以试试下面的方法。

    "my house is yellow".gsub(/[A-Za-z']+/,&:capitalize) 
     => "My House Is Yellow"
    "my house is yellow".split.map { |i| i.capitalize }.join(' ')
     => "My House Is Yello"
    

    【讨论】:

    • "我的房子是黄色的".gsub(/[A-Za-z']+/,&:capitalize) 我不明白这个
    • 哦,这就是正则表达式模式的方式。 :)
    【解决方案4】:

    小心点:这是不是 Unicode 安全方法:

    'привет, мир!'.titleize
    "привет, мир!"
    

    为了确保 Unicode 安全,请查看 unicode gem。

    Unicode.capitalize('привет, мир!')
    "Привет, мир!"
    

    这个 gem 可以正确处理 Unicode 字符,但是它没有 titleize 方法,它只有 capitalize 方法。

    【讨论】:

      猜你喜欢
      • 2011-05-27
      • 1970-01-01
      • 1970-01-01
      • 2013-02-04
      • 2020-09-11
      • 1970-01-01
      • 2015-07-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多