Ruby 1.9.3 と Rails 3.2 を使用して Ruby on Rails で作業しています。次のような長い単語列があります。
foo bar バナナ ナッツ フルーツ バー foobar クール 素晴らしい スタック オーバーフロー
この文字列を配列に分割したいと思います。配列の各要素には、この文字列から 3 つの単語が含まれている必要があります。どうすればこれを行うことができますか?
ありがとう!
Ruby 1.9.3 と Rails 3.2 を使用して Ruby on Rails で作業しています。次のような長い単語列があります。
foo bar バナナ ナッツ フルーツ バー foobar クール 素晴らしい スタック オーバーフロー
この文字列を配列に分割したいと思います。配列の各要素には、この文字列から 3 つの単語が含まれている必要があります。どうすればこれを行うことができますか?
ありがとう!
o = str.split.each_slice(3).map{|a| a.join(" ")}
string = "foo bar banana nut fruit bar foobar cool awesome stack overflow"
これは、各項目が文字列から正確に 3 つの単語を含む配列を返します。
string.scan /\w+\s+\w+\s+\w+/
# => ["foo bar banana", "nut fruit bar", "foobar cool awesome"]
アイテムの残りの単語も最後に追加したい場合:
string.scan /\w+\s*\w*\s*\w*/
# => ["foo bar banana", "nut fruit bar", "foobar cool awesome", "stack overflow"]
あなたの与えられた例について
x = "foo bar banana nut fruit bar foobar cool awesome stack overflow"
コード:
result = x.split(/\s+/).each_slice(3).to_a
次のようにグループ化します。
[ [foo, bar, banana] [nut, fruit, bar], [foobar, cool, awesome], [stack, overflow] ]