首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用regexp在Ruby数组中搜索多个元素

如何使用regexp在Ruby数组中搜索多个元素
EN

Stack Overflow用户
提问于 2016-10-14 23:27:19
回答 4查看 486关注 0票数 1

给定:

代码语言:javascript
复制
my_array = ['america', 'bombay', 'bostwana', 'cameroon']

我可以找到第一个以'bo'开头的元素的索引

代码语言:javascript
复制
my_array.find_index { |l| l.start_with? 'bo' }

我如何定位所有这样的元素?

EN

回答 4

Stack Overflow用户

发布于 2016-10-14 23:30:54

如果您需要这些元素:

代码语言:javascript
复制
my_array.find { |element| element.start_with? 'bo' }   # => "bombay"
my_array.select { |element| element.start_with? 'bo' } # => ["bombay", "bostwana"]

如果你想要索引:

代码语言:javascript
复制
my_array.index { |element| element.start_with? 'bo' } # => 1
my_array.map.with_index.select { |element, _| element.start_with? 'bo' }.map(&:last)
  # => [1, 2]
票数 1
EN

Stack Overflow用户

发布于 2016-10-15 00:05:59

您可以使用带有条件的map.with_index,并对结果执行compact

代码语言:javascript
复制
my_array.map.with_index{ |element, index| index if element.start_with? 'bo' }.compact

它是如何工作的

地图

map将获取所有值,并将它们“映射”到在将每个项传递到给定块时返回的值。

代码语言:javascript
复制
my_array.map { |element| element.start_with? 'bo' }
# => [false, true, true, false]

with_index

要获取索引值,可以使用with_index,如下所示:

代码语言:javascript
复制
my_array.map.with_index { |element, index| index }
# => [0, 1, 2, 3]

my_array.map.with_index { |element, index| index if element.start_with? 'bo' }
# => [nil, 1, 2, nil]

紧凑型

然后,为了摆脱nil值,可以对返回的数组调用compact

代码语言:javascript
复制
my_array.map.with_index{ |element, index| index if element.start_with? 'bo' }.compact
# => [1, 2]
票数 1
EN

Stack Overflow用户

发布于 2016-10-15 00:21:08

代码语言:javascript
复制
['america', 'bombay', 'bostwana', 'cameroon']
  .each_with_index # to get indices
  .grep(->(e) { e.first.start_with? "bo" }) # I ❤ Enumerable#grep
  .map(&:last) # get indices
#⇒ [1, 2]

我发布这篇文章是为了展示很少使用的方法。Enumerable#grep接受任何用于基于三等大小写比较来选择项目的内容。

在那里传递Proc实例很酷,因为Proc有一个默认的Proc#===实现:它只是在接收器上被调用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40046825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档