【发布时间】:2015-06-09 19:54:52
【问题描述】:
我正在尝试创建一个将字符串句子作为参数的方法,并将该句子翻译成猪拉丁语。我目前正试图用一种方法来完成这一切。
我可以很容易地做到这一点:
def pig_latin_word(word)
vowels = %w(a e i o u)
word_array = word.split('')
if vowels.include?(word_array[0])
word_array.join('')
else
until vowels.include?(word_array[0])
word_array += word_array.shift(1)
end
word = word_array.join('')
"#{word}ay"
end
end
我现在想做同样的事情,但让方法带一个句子。这是我目前所拥有的:
def pig_latin_sentence(sentence)
vowels = %w(a e i o u)
sentence_array = sentence.split.each_slice(1).map{|a| a.join('')}
sentence_array.each do |word|
if vowels.include?(word[0])
sentence_array.join(' ')
else
until vowels.include?(word[0])
word_array = word.split('')
word_array += word_array.shift(1)
end
p sentence_array.join('ay ')
end
end
end
我最初是想把这个句子切分出来,这样我就可以把每个单词分开。然后我可以遍历一个数组,每个单词都是一个元素。但是,为了让我执行.shift 方法,我必须再次拆分每个字符串元素。我怎样才能做到这一点?
还有,有没有人有更简洁的单字写法?
【问题讨论】:
-
(1)句法应用字法;这是问题的分解,是一个好主意。 (2) 单词方法应该只返回
word,如果它以元音开头(虽然这不是正确的猪拉丁语,例如,“alien”应该是“alienay”),例如,return word if vowels.include?(word_array[0])等。关于句子方法那个“不起作用”——请描述失败以及你期望什么,而不是让它成为一个完整的问题。 -
@Dave 说得对。我和一个在 Boara Boara 长大的朋友确认了。
-
@CarySwoveland 呜呜呜!大声笑
-
@Dave, ethay ewnay ooklay isway, erway, eryvay ecomingbay。
-
"是作业吗".gsub(/\w+/){|e|"#{e=~/^([^aeiou]+)/i?$'+$&:e }哎"}