我正在Ruby on Rails中使用Ruby 1.9.3和Rails 3.2。 我的话像这样的长字符串:如何在Ruby中分割字符串?
富巴香蕉坚果水果吧foobar的清凉真棒堆栈溢出
我想这个字符串分割成一个数组。数组中的每个元素都应该包含这个字符串中的三个单词。我会如何去做这件事?
谢谢!
我正在Ruby on Rails中使用Ruby 1.9.3和Rails 3.2。 我的话像这样的长字符串:如何在Ruby中分割字符串?
富巴香蕉坚果水果吧foobar的清凉真棒堆栈溢出
我想这个字符串分割成一个数组。数组中的每个元素都应该包含这个字符串中的三个单词。我会如何去做这件事?
谢谢!
o = str.split.each_slice(3).map{|a| a.join(" ")}
为您给出的例子
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] ]
string = "foo bar banana nut fruit bar foobar cool awesome stack overflow"
这将返回,其中每个项目包含从字符串完全三个字的数组:
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"]
另一个:string.scan/\ W +(?:\ S * \ W *){2} /' – Gazler 2012-07-18 21:37:33
尼斯的答案,但在你的最后一行,你应该使用方括号来清楚你正在构造一个数组。此外,分割默认使用“”,所以你可以通过做'string.split.each_slice(3).to_a'来简化它。 – Gazler 2012-07-18 21:18:10
感谢您的通知...编辑以反映数组:D – gtgaxiola 2012-07-18 21:22:17
在阅读其他答案后,用户希望结果是'[“foo bar banana”,“nut fruit bar”,“foobar cool awesome”,“stack overflow”],但是你的代码返回'[['foo','bar','banana' ],[“nut”,“fruit”,“bar”],[“foobar”,“cool”,“awesome”],[“stack”,“overflow”]] – Gazler 2012-07-18 21:42:07