如何获得与Crystal中的条件匹配的第一个元素?

时间:2015-07-29 21:00:32

标签: crystal-lang

我首先查找find,因为尽可能多的API与Ruby相同但找不到​​find。所以我认为下一个最好的是select + first(我的数组非常小,所以这样会好的。)

查看Crystal API select!获取一个块,就像在Ruby中一样。看来select!会改变接收数组,没有select(我至少可以看到它!)。

这是我的代码:

segment = text.split(' ').select! { |segment| segment.include?("rm_") }.first

错误是:

segment = text.split(' ').select! { |segment| segment.include?("rm_") }.first
                                     ^~~~~~~

1 个答案:

答案 0 :(得分:5)

Enumerable#findEnumerable#select都存在并记录在Enumerable上。

因此,如下所示,您可以从Ruby中了解它:

segment = text.split(' ').find &.includes?("rm_")

您还可以使用正则表达式来保留中间数组:

segment = text[/rm_[^ ]+/]

如果您在示例代码中将include?替换为includes?,它实际上也可以。