Ruby技术问题:如何统计含字母与数字的数组中的整数数量?
如何统计数组中的整数数量
首先得纠正你代码里的一个小问题:你用a << [0,1,2,3,4,5,6,7,8,9]的时候,是把整个整数数组作为单个元素加到a里面了,这样a的最后一个元素是数组,而不是单独的0-9这些整数。正确的做法应该用+=或者concat来把整数一个个追加到数组里:
a = 'abcdefghijklmnopqrstuvwxyz'.split('') a += [0,1,2,3,4,5,6,7,8,9] # 这样每个整数都是a的独立元素
接下来解决统计整数数量的核心问题:Array#count方法如果传一个对象(比如正则/\d/),它会统计数组中等于这个对象的元素个数,显然你的数组里没有元素是正则对象,所以返回0,这就是原来代码失效的原因。
你有两种靠谱的实现方式:
方法1:通过元素类型判断(最准确,适配你的场景)
因为你的数组里,字母是String类型,整数是Integer类型,直接用count结合块判断元素类型就可以:
t = a.sample(10) integer_count = t.count { |elem| elem.is_a?(Integer) } p integer_count
方法2:通过正则判断(适合元素是字符串形式数字的情况)
如果你的数组里的数字是字符串形式(比如"5"而不是5),可以用正则匹配来统计:
# 假设数组元素都是字符串 a = 'abcdefghijklmnopqrstuvwxyz0123456789'.split('') t = a.sample(10) integer_count = t.count { |elem| elem.match?(/\d/) } p integer_count
这样就能正确统计出数组里的整数(或字符串数字)数量啦~
内容的提问来源于stack exchange,提问作者Rich_F
相关产品推荐
相关产品推荐

