4

我有一个字符串数组,如下所示:

[noindex,nofollow]

或 [“索引”、“关注”、“全部”]

我称这些为“tags_array”。我有一个看起来像这样的方法:

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

但我认为运行此代码有一种更聪明的方法,而不是获取整个数组并将其转换为字符串。

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

关于最聪明的方法的任何建议?

4

1 回答 1

6

您不必将 Array 转换为 String,因为 Array 包含一个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 
于 2012-06-28T19:21:03.043 回答