2012-06-28 48 views
2

数组中的字符串我有一个字符串数组,看起来像这样:Ruby的方法来查找字符串

[noindex,nofollow] 

或 [“指数”,“跟随”,“所有”]

我打电话给这些“tags_array。”我有一个看起来像这样的方法:

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

但我觉得有运行该代码比拿整个阵列,并将其转换为字符串的明智之选。

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

任何建议,最聪明的方法来做到这一点?

+1

仅供参考,如果您在使用'include'或'or'或'or'的条件语句中使用'include?你需要把'include?'的参数放在括号里,比如'.include?(“index”)',否则你可能会抛弃这个条件。 –

+0

感谢您提及!我很感激。 –

回答

4

由于Array包含include?方法,因此您不必将数组转换为字符串。

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

但是,就像你说的,有时信息会以单个字符串的数组形式出现。如果该数组的单个String元素包含总是由空格分隔的单词,则可以使用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 
+0

阿哈,使用拆分方法。我非常喜欢这个策略。看起来像我的赢家。谢谢你的建议! –