http://www.cnblogs.com/lexus/archive/2011/01/22/1942248.html
ruby中的数组过滤
数组可以算是计算机编程中用到的最多的一个数据结构了,ruby中也是如此,这次我们来看看如何对数组中的项进行过滤,选出自己需要的项。
首先,假如有一个包含人名的数组:
-
>> name = %w{ zhangsan lisi wangwu zhaoliu galeki lyanry liulanger xiaosl tom nick bara}
-
=> ["zhangsan","lisi","wangwu","zhaoliu","lyanry","liulanger","xiaosl","tom","nick","bara" ]
假如我们现在要把4个字母的名字选出来,要怎么做呢?
像其他语言一样,写个for循环,遍历每一项,如果长度为4就选出来?
ruby有更好的办法,只需要一行:
-
>> name.find_all{|n| n.length == 4}
-
=> ["lisi", "nick", "bara"]
find_all 方法配合后面的block,简洁明了的筛选出了符合条件的数组项。如果我们要从数组中剔除某些项,要用到 reject 方法:
-
>> name.reject{|n| n.length == 4}
-
=> ["zhangsan", "wangwu", "zhaoliu", "galeki", "lyanry", "liulanger", "xiaosl", "tom"]
block 中也可以复合多个条件:
-
>> name.find_all{|n| n.length>3 && n.length <8 && n[0,1] == "z"}
-
=> ["zhaoliu"]
以上语句从数组中筛选出长度大于3,小于8,并且首字母为z的名字,依旧简洁明了,忽略效率的因素,我们甚至可以把ruby中的数组当作数据库来查询了。
分享到:
相关推荐
Ruby的数组和哈希都支持丰富的操作,如合并、迭代、过滤等。 五、模块和类 Ruby的模块(Module)用于组织代码,提供命名空间和混合(mixin)功能。类(Class)是创建对象的蓝图,可以包含方法、属性以及继承关系。...
3. **Ruby Select**: Select方法用于过滤数组中的元素,根据提供的条件返回满足条件的元素的新数组。例如,找出所有偶数: ```ruby numbers = [1, 2, 3, 4, 5] even_numbers = numbers.select { |n| n.even? } ...
**Ruby 在 Logstash 过滤器中的应用** Ruby 是 Logstash 的主要编程语言,它允许用户自定义复杂的过滤逻辑。通过使用 Ruby 过滤器,我们可以编写任意的 Ruby 代码来处理事件,实现对数据的清洗、转换或增强。Ruby ...
- 集合操作如查找、排序、合并、过滤等,源代码会提供各种实例,帮助理解Ruby的数组和哈希操作的强大。 6. **文件和I/O** - 文件读写操作,如`File.open`,以及流处理,源代码将展示如何进行文件操作。 - 标准...
5. **集合操作**:Ruby的数组和哈希提供了多种高效的操作,如映射、过滤、归并等,这些操作在解决复杂问题时能简化代码。 6. **模块和 Mixins**:Ruby的模块可以用来组织代码,也可以通过`include`或`extend`来实现...
- 在block中,`send_mail`方法发送邮件,提供发件人地址和收件人地址的数组。 2. **邮件结构** 邮件由两部分构成:信封(envelope)和内容(content)。信封包含邮件传递信息,而内容包括标题(header)和实际...
`检查元素是否存在于数组中,`Hash#key?`则检查键是否存在哈希中。 Ruby的Gem库是其强大的扩展机制,其中包含了大量的算法实现,如计算几何、图论、数值分析等。例如,`NMatrix` gem 提供了高效的矩阵运算,适合...
在实际项目中,你可能会遇到一些常见问题,比如邮件被当作垃圾邮件过滤,或者由于网络问题导致发送失败。这时,可以利用Pony的错误处理机制,例如设置重试策略或捕获异常。 总的来说,Pony是Ruby开发者用于快速、...
5. **过滤(Filter)**:`select`或`reject`方法在Ruby中用于根据给定条件筛选数组元素,返回满足条件的新数组。 6. **折叠(Fold/Reduce)**:`reduce`方法将数组的所有元素归约到单个值,它可以用于求和、乘积或...
使用场景:数组中元素都是有各自的索引位置,有时候我们想人为的控制某个元素的索引编号,或者不想使用某个索引编号,可以在数组中加入nill来占位 数组的.each方法,each可以逐一对各元素进行某种方法,体现在...
`each` 和 `map` 是两种常见的迭代方法,它们用于遍历数组或集合中的元素。虽然它们在某些场合可以相互替代,但它们之间存在显著差异。 ##### `each` 方法:迭代的基石 `each` 方法是 Ruby 中最基础的迭代方法之一...
在这个例子中,我们通过$filter服务调用了内置的lowercase过滤器,将字符串"Ruby"转换为小写,并将转换后的值赋给$scope.name。 创建自定义过滤器的步骤如下: 1. 使用.filter方法定义一个新的过滤器。这个方法...
在Ruby编程语言中,命令行注入是一种常见的安全漏洞,它发生在程序不安全地处理用户输入,从而允许攻击者执行任意操作系统命令。这个"基于Ruby编写的命令行注入版本.zip"可能包含一个示例代码库或者教程,用于演示...
Ruby提供了丰富的数组方法,如`map`、`each`、`select`、`reduce`等,可以方便地对序列进行转换和过滤。理解这些方法的工作原理,能提高解题效率。 4. **字符串处理** 字符串处理是编程竞赛中常见的任务,Ruby的...
这是访问一个确实是数组的子节点的最快方式,不支持XPath 搜索,并且所有的子节点元素都在这个数组中,不只是Element 的子节点。 4. XPath:在 REXML 中,XPath 是从 1 开始计数的,而不是 0,因为 XPath 就是从 1 ...
1. **命令行参数处理**:Ruby的`OptionParser`库或`ARGV`全局数组可以帮助解析命令行参数,根据用户提供的选项进行相应操作。 2. **HTTP请求与解析**:为了与torrent搜索引擎交互,需要使用如`Net::HTTP`库发送HTTP...
1. **Ruby基础知识**:理解Ruby的基本数据类型(如字符串、数字、数组、哈希)、控制结构(如if语句、case语句、循环)、方法定义、类和模块的概念以及继承机制。此外,还需了解Ruby中的块、Proc和Lambda,以及它们...
- Ruby中的运算符本质上是方法,可以通过重定义这些方法来自定义运算符的行为。 **7.2 变长参数** - 方法可以接受不定数量的参数,使用`*args`来接收额外的参数。 **7.3 块调用** - 方法可以接受代码块,并在...