snake_casing을 PascalCasing으로 바꾸는 Ruby 정규식?
-
12-12-2019 - |
문제
다음 기능을 사용하는 웹 프레임워크를 만들었습니다.
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
메소드는 문자열의 첫 글자를upcase
S, 모든 단어의 첫 글자가 아닙니다.
다른 팁
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
. 제휴하지 않습니다 StackOverflow