문제

다음 기능을 사용하는 웹 프레임워크를 만들었습니다.

def to_class(text)
    text.capitalize
    text.gsub(/(_|-)/, '')
end

디렉토리 이름을 바꾸려면 snake_cased 또는 hyphen-cased ~ 안으로 PascalCased 프로젝트의 클래스 이름.

문제는 기능만 제거되었다는 것입니다. _ 그리고 -, 다음 문자는 대문자로 사용하지 않습니다.사용 .capitalize, 또는 .upcase, 당신의 작품을 만들 수 있는 방법이 있나요? snake/hyphen_/-cased 이름을 적절하게 PascalCased 수업 이름?

도움이 되었습니까?

해결책

_- 케이스 문자열을 어레이로 분리합니다.모든 회원을 대문자로 사용하고 배열을 다시 문자열로 접착시킵니다.

def to_pascal_case(str)
  str.split(/-|_/).map(&:capitalize).join
end

p to_pascal_case("snake_cased") #=>"SnakeCased"
.

여러 가지 이유로 코드가 작동하지 않습니다.

  • 자본화 방법의 결과적인 대상은 폐기됩니다 - 당신은 text.capitalize! 또는 text = text.capitalize와 같은 일을해야합니다.
  • 그러나 capitalize 메소드는 문자열의 첫 글자를 upcaseS, 모든 단어의 첫 글자가 아닙니다.

다른 팁

gsub(/(?:^|[_-])([a-z])?/) { $1.upcase unless $1.nil? }
.

Rails에는 카마셀화 라는 유사한 방법이 있습니다.기본적으로 [a-z0-9]로 구성된 문자열의 모든 부분을 대문자로 활용하고 다른 모든 것을 제거합니다.

아마도 더 작은 것으로 뭔가를 줄일 수는 있지만,

txt = 'foo-bar_baz'
txt.gsub(/(?:^|[-_])([a-z])/) { |m| m.upcase }.gsub(/[-_]/, '') # FooBarBaz
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top