我需要检查单词是否以元音或辅音开头。对于以元音开头的单词,我需要广告" ay"到这个词的结尾。这部分很简单。我像这样管理它:
def translate string
vowels = ["a", "e", "i", "o", "u"]
if vowels.include? (string[0])
string +'ay'
else
*the consonant part goes here*
end
end
我需要有关辅音部分语法的帮助。如果一个单词以辅音开头,则将其移到单词的末尾,然后添加一个" ay"声音到了最后。 这是我在if语句的else部分尝试做的事情:
consonant = string(0)
new_word = string - string(0)
pig_latin_word = new_word << consonant << "ay"
谢谢。
答案 0 :(得分:1)
一个优雅的解决方案是连接字符串的片段,使用与数组相同的语法,使用&#39; ay&#39;在一个整洁的衬里:
string[1..-1] + string[0] + 'ay'
答案 1 :(得分:1)
我想你想用string(0)
做的是获取字符串中的第一个字符,在这种情况下你需要用方括号string[0]
来做。
当您string - string[0]
取出字符串中的第一个字符,并将其分配给名为new_word
的变量时,您会获得undefined method
- &#39; {{1对于这样的操作,当没有第一个字符时,你可以从字符串中取出一定数量的字符并将其分配给该变量,如:
error, that's because you can't use
这样就可以给出字符串中的字符,范围从1到最后一个元素(p 'the'[1..-1]
# => "he"
)。
我可以说,当你执行-1
时,如果你只是pig_latin_word = new_word << consonant << "ay"
最后一次评估的表达式,那么这样做会更容易,因为你没有使用{{1}变量,您可以使用return
结尾插入变量,这将是方法返回的情况,即字符串的第一个字符不是小写的元音,所以,这样的东西会使你的代码工作:
pig_latin_word
但是我仍然不确定,你是否必须验证被传递的句子中的每个单词?在这种情况下会添加&#34; ay&#34;只是到了字符串的最后一个单词,如果单个单词被传递,那么它可以工作,但是使用"ay"
这样的句子然后它会返回vowels = ["a", "e", "i", "o", "u"]
if vowels.include? (string[0])
string +'ay'
else
consonant = string[0]
new_word = string[1..-1]
"#{new_word}#{consonant}ay"
end
。
和/或在你检查字符串的第一个字符是否是元音的情况下,你只检查小写元音,如果它是一个大写的元音,它会使它看起来像: / p>
'the quick brown fox'
它会将您的"he quick brown foxtay"
第一个字符移动到字符串的末尾并添加p translate('apple')
# => "appleay"
p translate('Apple')
# => "ppleAay"
。
你可以做的是A
你的字符串被作为参数传递 - 这样如果它是一个句子,你得到每个单词,如果是一个单词,那么它就可以了也是 - 并检查它们的每个第一个字符是否与元音,大写和小写相匹配,如果是,那么你只返回ay
加split
,如果不是,然后你得到单词中的每个字符,从这个数组中生成,并将它们旋转一个字符,这样如果传递的字符串是word
,你得到"ay"
,那么它就是一个字符数组,您加入它们并添加'the quick brown fox'
结尾,然后添加&#34;映射&#34;你使用join来连接每个单词的空格,如:
"het uickq rownb oxf"