2014-06-13 2 views
0

나는 내가하고있는 튜토리얼에 대한 몇 가지 조건을 충족시키는 방법을 알아 내려고 노력해왔다.문자열을 낙타의 경우로 변환하는 데 문제가 있음

난에서 일할 수있는 다음과 같은 테스트 사양이 : 나는 아래의 코드 작업 첫 두 조건을 얻기 위해 관리해야

describe "String" do 
    describe "camel_case" do 
    it "leaves first word lowercase" do 
     "test".camel_case.should eq("test") 
    end 
    it "should lowercase first letter if it isn't" do 
     "Test".camel_case.should eq("test") 
    end 
    it "should combine words using camel case" do 
     "This is a test".camel_case.should eq("thisIsATest") 
    end 
    it "should downcase words with capitals" do 
     "MUST dOWNCASE words".camel_case.should eq("mustDowncaseWords") 
    end 
    end 
end 

을,하지만 난 조인을 얻기 위해 여러 가지의 무리를 시도하고 성공없이 일하기 위해 수도 조건으로 몰락했다.

class String 
    def camel_case 
    self.downcase 
    end 
end 

.split을 사용하면 .join 메서드를 사용하면 효과가 있다고 생각했지만 생각하지 못했습니다.

+0

".split then .join 메서드"를 추가 할 수 있습니까? – Stefan

+2

[camelize] (http://www.apidock.com/rails/String/camelize) –

+0

split을 사용하면 배열의 각 단어를 개별적으로 조작 할 수있는 색인을 가진 단어 배열을 제공 할 수 없습니다. ? 각각의 색인은 첫 번째 단어를 식별 할 수 있다는 점에서 (첫 번째 문자를 대문자로하지 않기 위해) 배열의 각 단어의 첫 글자를 대문자로 바꿔서 조인 한 다음 맨 처음 문자를 소문자로 사용합니다 ... – user3334690

답변

1

문제는 실제로 camelizing을하지 않는다는 것입니다. 당신의 camel_case 방법이하는 유일한 일은 어구의 모든 글자를 만드는 것입니다 ... 어 ... 다운 케이스. 나중에 splitjoin이 올바른 작업입니다.

class String 
    def camel_case 
    downcased = self.downcase # here you only downcased your input 
    array_of_words = downcased.split 
    # now you should make the first letter of each word upper-cased 
    # ... 
    words_with_first_letter_capitalized.join 
    end 
end 
+0

조인 후 첫 번째 문자를 소문자로 만드는 것을 잊지 마라. 그렇지 않으면 WillBeLikeThis 대신에 그렇지 않으면 ... – user3334690

1

대신에 낙타 또는 낙타를 사용하십시오.

관련 문제