1

Rails に付属の titlecase メソッドを変更して、必要なすべてを大文字にするが、既に大文字になっているものを決して取らずに小文字にする方法はありますか? たとえば、「ABC フォト シュート」というタイトルは、「ABC フォト シュート」ではなく「ABC フォト シュート」にする必要があります。

4

1 に答える 1

1

私が知っているように、Rails にはそのような組み込みメソッドはありません。私はカスタムのものを構築するだけです。

class String
  def smart_capitalize
    ws = self.split
    ws.each do |w|
      w.capitalize! unless w.match(/[A-Z]/)
    end
    ws.join(' ')    
  end
end

"ABC photo".smart_capitalize 
#=> "ABC Photo"

"iPad is made by Apple but not IBM".smart_capitalize
#=> "iPad Is Made By Apple But Not IBM"

追加: Associated Press Style に従って重要でない単語を除外するには

class String
  def smart_capitalize
    ex = %w{a an and at but by for in nor of on or so the to up yet}
    ws = self.split
    ws.each do |w|
      unless w.match(/[A-Z]/) || ex.include?(w)
        w.capitalize! 
      end
    end
    ws.first.capitalize!
    ws.last.capitalize!
    ws.join(' ')    
  end
end

"a dog is not a cat".smart_capitalize
#=> "A Dog Is Not a Cat"

"Turn the iPad on".smart_capitalize
#=> "Turn the iPad On"
于 2013-07-08T03:50:06.323 に答える