2012-12-20 3 views
2

레일스의 일부 라이브러리에있는 메서드가있을 수도 있고 나머지 문자열의 대소 문자 상태에 영향을주지 않고 문자열의 첫 글자를 대문자로 쉽게 바꾸는 방법이 있을까요? 오류 메시지를 대문자로 사용할 때 사용하고 싶습니다.문장의 대문자 사용

"hello iPad" #=> "Hello iPad" 

답변

3

보십시오 :이 같은 기대합니다. 당신은 그렇지 않으면 자신을 작성할 수 있습니다

class String 
    def capitalize_first 
    (slice(0) || '').upcase + (slice(1..-1) || '') 
    end 

    def capitalize_first! 
    replace(capitalize_first) 
    end 
end 

편집 : 추가 capitalize_first! 변형.

+0

그리고 물론'capitalize_first! '도 필요합니다.) –

+0

'capitalize'는 레일이 아닌 루비에서 왔습니다. – Reactormonk

+0

Oups. 그것을 고정. –

-3

가 루비의 활용 방법이지만, 문자열의 나머지와 downcase 것이

"hello iPad".camelize 
+1

이것은 정말로 문자열을 Camelize 할 것이다. 만약 제공된 문자열에'some_undesrcores'가 포함되어 있다면? '일부 언더 스코어'로 낙타 화 될 것입니다. –

+1

좋은 트릭이지만 "hello some_stuff"를 "Hello someStuff"로 바꿀 것입니다. 밑줄이 없으면 괜찮습니다. 그렇지 않으면 놀라운 결과가 나타날 수 있습니다 (놀라움은 대개 환영받지 못합니다). –

+0

아이디어를 제공해 주셔서 감사합니다. Remus와 Jean이 지적한 바와 같이 문제가 있지만 'camelize'소스 코드를 살펴보면 나에게 힌트를 얻었습니다. – sawa

2

오히려 서투른,하지만 작동 : 다른 답변에

str = "hello IiPad" 
str[0] = str[0].upcase #or .capitalize 
+1

빈 문자열을 확인해야하며,'str = ""'으로 스 니펫을 실행하면 충돌이 발생합니다. –

+0

감사합니다. 나는 이제 첫 번째 캐릭터를 별도로 다루는 무언가를해야한다는 것을 깨닫는다. – sawa

2

덕분에, 내가 알아야 할 몇 가지 포인트를 실현하지 않으며, 또한 어떤 방법으로이 내장되어있다. Vitaly Zemlyansky가 암시 한 레일즈 액티브 서포트 (Active Support of Rails)에서 camelize의 소스를 살펴 보았습니다. 힌트를 얻었습니다. 즉, 정규식을 사용하는 것입니다. 나는 이것을 사용하기로 결정했다 :

sub(/./){$&.upcase}