[ruby] 루비는 모든 단어 첫 글자를 대문자로

모든 단어의 첫 문자를 대문자로하고 나머지는 소문자로 만들어야합니다 …

manufacturer.MFA_BRAND.first.upcase

첫 글자를 대문자로만 설정하고 있지만 다음이 필요합니다.

ALFA ROMEO => Alfa Romeo
AUDI => Audi
BMW => Bmw
ONETWO THREE FOUR => Onetwo Three Four



답변

이 시도:

puts 'one TWO three foUR'.split.map(&:capitalize).join(' ')

#=> One Two Three Four

또는

puts 'one TWO three foUR'.split.map(&:capitalize)*' '


답변

레일에서 :

"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

Rails 없음 (#titleize 메소드를 패치하기 위해 Rails의 ActiveSupport로드 String)

require 'active_support/core_ext'
"kirk douglas".titleize #=> "Kirk Douglas"

#titleize가 처리하는 (일부) 문자열 사용 사례

  • “커크 더글러스”
  • “kirk_douglas”
  • “커크 두 글라스”
  • “커크 더글라스”
  • “커크 더글라스”

#titleize gotchas

Rails titleize는 대시 및 밑줄과 같은 것을 공백으로 변환하고 특히 @JamesMcMahon이 지적한 대소 문자 구분 상황에서 예기치 않은 다른 결과를 생성 할 수 있습니다.

"hEy lOok".titleize #=> "H Ey Lo Ok"

다음과 같은 낙타 케이스 코드를 처리하기 때문입니다.

"kirkDouglas".titleize #=> "Kirk Douglas"

이 경우를 처리하기 위해 #downcase#titleize를 실행하기 전에 먼저 문자열을 정리할 수 있습니다 . 물론 그렇게한다면 낙타에서 분리 된 단어를 지우 게됩니다 :

"kirkDouglas".downcase.titleize #=> "Kirkdouglas"


답변

"hello world".titleize “Hello World”를 출력해야합니다.


답변

또 다른 옵션은 정규 표현식과 gsub를 사용하는 것입니다.

'one TWO three foUR'.gsub(/\w+/, &:capitalize)


답변

String # capitalize 메소드를 살펴보십시오.

http://www.ruby-doc.org/core-1.9.3/String.html#method-i-capitalize


답변

"hello world".split.each{|i| i.capitalize!}.join(' ')


답변

배열에서 각 단어의 첫 글자를 대문자로 사용하려는 경우 간단히 다음을 입력하십시오.

array_name.map (& : 자본)