2012-06-28 47 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

阿哈,使用拆分方法。我非常喜歡這個策略。看起來像我的贏家。謝謝你的建議! –