私がすることになっています:
- 文字列の最初の文字を大文字にします。
the
冠詞 ( 、a
、an
)、接続詞 (and
)、および前置詞 ( )を除くすべての単語を大文字にしin
ます。- 大文字にします
i
(のように"I am male."
)。 - 文字列の最初の単語を指定します (実際には、これが何を意味するのかわかりません。spec ファイルを実行して他の関数をテストしようとしています)。
これが私のコードです:
class Book
def initialize(string)
title(string)
end
def title(string)
arts_conjs_preps = %w{ a an the and
but or nor for
yet so although
because since
unless despite
in to
}
array = string.downcase.split
array.each do |word|
if (word == array[0] || word == "i") then word = word.capitalize
if arts_conjs_preps !include?(word) then word = word.capitalize
end
puts array.join(' ')
end
end
puts Book.new("inferno")
ルビーは私がめちゃくちゃだと言っています:
puts Book.new("inferno") <--(right after the last line of code)
このテスト コードでは、まったく同じエラー メッセージが表示されます。
def title(string)
array = string.downcase.split
array.each do |word|
if word == array[0] then word = word.capitalize
end
array.join(' ')
end
puts title("dante's inferno")
この特定の構文エラーに関して、end
s または s または.
s の末尾または欠落が問題の原因であることを示唆していない唯一の他のスタック オーバーフロー スレッドは、こちらです。最後のコメントは、gemset を削除して再作成することを推奨していますが、これは恐ろしく聞こえます。そして、どうすればいいのかわからない。
何かご意見は?簡単な解決策?役立つリソースはありますか?
解決
class Book
def initialize(string)
title(string)
end
def title(string)
arts_conjs_preps = %w{ a an the and
but or nor for
yet so although
because since
unless despite
of in to
}
array = string.downcase.split
title = array.map do |word|
if (word == array[0] || word == "i") || !arts_conjs_preps.include?(word)
word = word.capitalize
else
word
end
end
puts title.join(' ')
end
end
Book.new("dante's the inferno")