Rails가 문자열의 첫 번째 문자를 대문자로하고 나머지는 그대로 두도록하려고합니다. “나는 뉴욕에서 왔어요”가 “뉴욕에서 왔어요”로 바뀌는 문제에 봉착했습니다.
첫 번째 캐릭터를 선택하려면 어떤 방법을 사용해야합니까?
감사
편집 : macek이 제안한 것을 구현하려고했지만 “정의되지 않은 메서드 ‘대문자 화'” 오류가 발생합니다. 코드는 대문자 줄없이 잘 작동합니다. 도와 주셔서 감사합니다!
def fixlistname!
self.title = self.title.lstrip + (title.ends_with?("...") ? "" : "...")
self.title[0] = self.title[0].capitalize
errors.add_to_base("Title must start with \"You know you...\"") unless self.title.starts_with? 'You know you'
end
편집 2 : 작동합니다. 도와 주셔서 감사합니다!
편집 3 : 잠깐, 아니 내가하지 않았다 … 여기에 내 목록 모델에있는 것입니다.
def fixlistname!
self.title = self.title.lstrip + (title.ends_with?("...") ? "" : "...")
self.title.slice(0,1).capitalize + self.title.slice(1..-1)
errors.add_to_base("Title must start with \"You know you...\"") unless self.title.starts_with? 'You know you'
end
편집 4 : macek의 편집을 시도했지만 여전히 정의되지 않은 메서드 ‘대문자 화’ “ 오류가 발생합니다. 내가 뭘 잘못하고있을 수 있습니까?
def fixlistname!
self.title = title.lstrip
self.title += '...' unless title.ends_with?('...')
self.title[0] = title[0].capitalize
errors.add_to_base('Title must start with "You know you..."') unless title.starts_with?("You know you")
end
편집 5 : 이것은 이상합니다. 아래 줄을 사용하여 정의되지 않은 메서드 오류를 제거 할 수 있습니다. 문제는 첫 글자를 숫자로 바꾸는 것 같습니다. 예를 들어, 대신 활용의 예를 로 하면 , 상기 회전 Y를 (A121)로
self.title[0] = title[0].to_s.capitalize
답변
Titleize는 모든 단어를 대문자로 표시합니다. 이 줄은 무거워 보이지만 변경된 유일한 문자가 첫 번째 문자임을 보장합니다.
new_string = string.slice(0,1).capitalize + string.slice(1..-1)
최신 정보:
irb(main):001:0> string = "i'm from New York..."
=> "i'm from New York..."
irb(main):002:0> new_string = string.slice(0,1).capitalize + string.slice(1..-1)
=> "I'm from New York..."
답변
이렇게해야합니다.
title = "test test"
title[0] = title[0].capitalize
puts title # "Test test"
답변
Humanize를 사용할 수 있습니다. 텍스트 줄에 밑줄이나 기타 대문자가 필요하지 않은 경우.
입력:
"i'm from New_York...".humanize
산출:
"I'm from new york..."
답변
str = "this is a Test"
str.sub(/^./, &:upcase)
# => "This is a Test"
답변
현재 레일 5.0.0.beta4 새 사용할 수있는 String#upcase_first
방법을 또는 ActiveSupport::Inflector#upcase_first
그것을 할 수 있습니다. 자세한 내용은이 블로그 게시물 을 확인하세요 .
답변
객체 지향 솔루션 :
class String
def capitalize_first_char
self.sub(/^(.)/) { $1.capitalize }
end
end
그런 다음 이렇게 할 수 있습니다.
"i'm from New York".capitalize_first_char
답변
str.sub(/./, &:capitalize)