在Ruby中查找字符串数组的方法

5

我有一个字符串数组,看起来像这样:

[noindex,nofollow]

或 ["index", "follow", "all"]

我把它们称为“tags_array”。我有一个方法如下:

return true if self.tags_array.to_s.include? "index" and !self.tags_array.to_s.include? "noindex"

但是我认为有一种比将整个数组转换为字符串更为聪明的运行代码的方式。

问题在于,有时信息以单个元素数组的形式出现,而有时则以字符串数组的形式出现。

有没有关于如何最聪明地处理这个问题的建议?


1
如果你在条件语句中使用 include? 这样的方法,并且带有 andor,那么你需要将 include? 的参数放在括号中,例如 .include?("index"),否则可能会影响条件。 - Charles Caldwell
谢谢你提到了这个!我很感激。 - Ben Downey
1个回答

7

你不需要将数组转换为字符串,因为数组包含一个include?方法。

tags_array.include?("index") #=> returns true or false

然而,就像你所说的那样,有时候信息作为一个单独字符串的数组呈现。如果该数组中的单个字符串元素包含通过空格分隔的单词,则可以使用 split 方法将字符串转换成数组。

tags_array[0].split.include?("index") if tags_array.size == 1 

或者,如果单词总是用逗号分隔:
tags_array[0].split(",").include?("index") if tags_array.size == 1 

编辑:

或者,如果您不知道它们将被什么分隔,但您知道这些单词只包含字母:

tags_array[0].split(/[^a-zA-Z]/).include?("index") if tags_array.size == 1 

啊哈,使用分割方法。我非常喜欢那个策略。在我看来,这似乎是赢家。谢谢你的建议! - Ben Downey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接