ในราง:
"kirk douglas".titleize => "Kirk Douglas"
#this also works for 'kirk_douglas'
ไม่มีราง:
"kirk douglas".split(/ |\_/).map(&:capitalize).join(" ")
#OBJECT IT OUT
def titleize(str)
str.split(/ |\_/).map(&:capitalize).join(" ")
end
#OR MONKEY PATCH IT
class String
def titleize
self.split(/ |\_/).map(&:capitalize).join(" ")
end
end
w / o Rails (ActiveSupport ของ load rails เพื่อแก้ไข patch #titleize ให้String
)
require 'active_support/core_ext'
"kirk douglas".titleize #=> "Kirk Douglas"
(บางส่วน) การใช้งานสตริงที่จัดการโดย #titleize
- "เคิร์กดักลาส"
- "kirk_douglas"
- "เคิร์กดักลาส"
- "เคิร์กดักลาส"
- "เคิร์กดักลาส"
#titleize gotchas
Rails's titleize
จะแปลงสิ่งต่าง ๆ เช่นขีดคั่นและขีดเส้นใต้เป็นช่องว่างและสามารถสร้างผลลัพธ์ที่ไม่คาดคิดอื่น ๆ โดยเฉพาะอย่างยิ่งกับสถานการณ์ที่ต้องพิจารณาตัวพิมพ์เล็กและตัวใหญ่โดย @JamesMcMahon:
"hEy lOok".titleize #=> "H Ey Lo Ok"
เพราะมันมีไว้เพื่อจัดการรหัสอูฐใส่:
"kirkDouglas".titleize #=> "Kirk Douglas"
ในการจัดการกับกรณีขอบนี้คุณสามารถล้างสตริงของคุณด้วย#downcase
ก่อนที่จะรัน #titleize แน่นอนถ้าคุณทำเช่นนั้นคุณจะลบล้างการแยกคำใด ๆ ของ camelCased:
"kirkDouglas".downcase.titleize #=> "Kirkdouglas"
split
จะแบ่งพื้นที่โดยค่าเริ่มต้นเพื่อให้คุณสามารถทำให้มันยิ่งสั้น:'one TWO three foUR'.split.map(&:capitalize).join(' ')