4

次のような文字列の配列があります。

[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"

しかし、配列全体を取得して文字列に変換するよりも、このコードを実行する方が賢明な方法があると思います。

問題は、情報が単一の要素配列として入力される場合と、文字列の配列として入力される場合があります。

これを行うための最も賢い方法に関する提案はありますか?

4

1 に答える 1

6

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 に答える