- 已关闭。**此问题为not reproducible or was caused by typos。当前不接受答案。
这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
3天前关闭。
Improve this question
p "Enter a list of spaced words:"
user_in = gets.chomp,split
user_in.each_with_index do |element, index|
if index.even?
p element
end
end
这将返回一个错误。而且它只返回奇数的单词(元素),即使它写着:
如果索引,偶数?
3条答案
按热度按时间9jyewag01#
这一行有一处打字错误
将逗号改为点
wh6knrhe2#
@spickermann已确定您出错的原因。
在这种情况下,最好使用String #scan而不是String #split,因为
split
返回的数组中包含的某些字符串可能包含标点符号,如逗号和句点,在确定所包含单词的长度时必须考虑这些标点符号。假设字符串中的任何字符
'
都是撇号,而不是单引号,则可以编写如下内容:正则表达式
/[a-z']+/i
表示"匹配一个或多个(+
)字母或撇号"。修饰符i
规定字母的匹配不区分大小写。请注意,不需要
chomp
。laximzn53#
除了逗号之外,你还需要检查单词的长度来检查它是否是偶数,现在你正在检查
split
返回的数组的索引。gets
读取输入。chomp
剪切行尾的多余字符。split
通过检查空格从输入创建单词数组。item.length.even?
检查单词是否包含偶数个字符。