2

我第一次找了find和Ruby一样多的API但是没找到find。所以我认为下一个最好的是select+ first(我的数组非常小,所以这很好)。

查看数组的 Crystal APIselect!需要一个块,就像在 Ruby 中一样。它似乎select!改变了接收数组,没有select(我至少可以看到!)。

这是我的代码:

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

错误是:

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

1 回答 1

5

两者都Enumerable#find存在Enumerable#select并且记录在Enumerable上。

因此,正如您在 Ruby 中所知道的那样,以下内容确实有效:

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

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

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

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

于 2015-07-29T21:18:57.243 回答