我有一个看起来像这样的字符串数组:
[noindex,nofollow]
Run Code Online (Sandbox Code Playgroud)
或 [“索引”,“关注”,“全部”]
我称这些为“tags_array”。我有一个看起来像这样的方法:
return true if self.tags_array.to_s.include? "index" and !self.tags_array.to_s.include? "noindex"
Run Code Online (Sandbox Code Playgroud)
但我认为有一种比获取整个数组并将其转换为字符串更聪明的方法来运行此代码。
问题是,有时信息以单个元素数组的形式出现,而有时它以字符串数组的形式出现。
关于最明智的方法有什么建议吗?
您不必将 Array 转换为 String,因为 Array 包含一个include?方法。
tags_array.include?("index") #=> returns true or false
Run Code Online (Sandbox Code Playgroud)
但是,正如您所说,有时信息会以单个字符串的数组形式出现。如果该 Array 的单个 String 元素包含始终由空格分隔的单词,则可以使用该split方法将 String 转换为 Array 。
tags_array[0].split.include?("index") if tags_array.size == 1
Run Code Online (Sandbox Code Playgroud)
或者,如果单词总是用逗号分隔:
tags_array[0].split(",").include?("index") if tags_array.size == 1
Run Code Online (Sandbox Code Playgroud)
编辑:
或者,如果您不知道它们将被什么分隔,但您知道单词将只包含字母:
tags_array[0].split(/[^a-zA-Z]/).include?("index") if tags_array.size == 1
Run Code Online (Sandbox Code Playgroud)