我试图遍历元音"aeiou"
并向前移动每个字母,返回字符串"eioua"
。这是我的代码:
def vowel(letter)
vowels = "aeiou"
string = ""
index = 0
while index < letter.length
current_id = vowels.index(letter)
next_vowel = vowels[current_id + 1]
string += next_vowel
index += 1
end
string
end
当我将"aeiou"
作为参数传递给我的方法时,只需"a"
,然后打印"eeeee"
。
vowel("aeiou") # => "eeeee"
答案 0 :(得分:2)
您始终附加由索引current_id = vowels.index(letter)
找到的元音(增加1)。这就是代码将e
(a
旁边)追加五次的原因。 index
变量仅用作循环计数器。
此代码还有另一个小问题:当letter
是最后一个时,current_id
是最后一个字母的索引,vowels[current_id + 1]
是nil
。
目前我无法为此问题提供解决方案,因为描述和预期结果不一致:“向前移动每个字母”不会在给定输入上产生"eioua"
。
答案 1 :(得分:1)
如果你想旋转单词的字母(并形成一个新单词,而不是修改单词),可以采用以下方法:
str = "aeiou"
new_str = str.chars.rotate.join. #=> "eioua"
str #=> "aeiou"
如果您希望修改字符串:
str.object_id. #=> 70128532752540
str.replace(str.chars.rotate.join) #=> "eioua"
str #=> "eioua"
str.object_id #=> 70128532752540