我如何解析这个字符串

时间:2012-08-29 13:53:26

标签: ruby-on-rails ruby

好的,我有这个字符串

Something 06/15/2009 some other data  33 77

我想像这样分开他们

Something
06/15/2009
some other data  
33 
77

任何想法干净的方法

3 个答案:

答案 0 :(得分:5)

我会使用正则表达式(或用空格分割吗?)。

这是一个快速正则表达式,可以为你分割

([a-zA-Z0-9\/]*\s)

http://rubular.com/r/qWVj3yr3aw

编辑:没有注意到带有空格的一段数据。您仍然可以使用正则表达式,只需要澄清数据的一列“列”的开始和结束位置。

如果这是您正在寻找的数据,那么这里是数据的精确匹配(尽管有更好的方法,如果“其他一些数据”发生变化,考虑此声明并不是很有用。)

(\w+)\s([\w\/]+)\s(some other data)\s\s(\d*)\s(\d*)

http://rubular.com/r/yNEBNKq97N

答案 1 :(得分:1)

你可以尝试:

/(.+?)\s+(\d+\/\d+\/\d+)\s+(.+?)\s+(\d+)\s+(\d+)/

Rubular example

至少给出了你想要的例子。

<强>更新

让。+部分贪婪可能更好:

/(.+)\s+(\d+\/\d+\/\d+)\s+(.+)\s+(\d+)\s+(\d+)/

这样,'某事'或'其他一些数据'可以包括日期和数字。

答案 2 :(得分:0)

一种简单的方法是some_string.split(" "),以获取子串的数组。

"Something 06/15/2009 some other data  33 77".split(" ")
=> ["Something", "06/15/2009", "some", "other", "data", "33", "77"]