2011-06-06 42 views
2

我在ruby代码中有要求。我使用ruby 1.9.2和rails 3.0。 我有一个像“SR2G1M1D2”这样的字符串。现在我想分割它并提取像[S,R2,G1,M1,D2]这样的值。就像每当下一个值是字符时它应该split.Is有任何ruby函数或代码可用。使用ruby将字符串解析为字符

Thanx

+0

正如nathanvda所建议的,有一个更好的泛化。也就是说,每个值都是大写字母,可能后跟一个数字。虽然更多的例子可能会说明这是否正确。 – sawa 2011-06-06 08:24:00

+0

thanx 2全部回复.. – Bijendra 2011-06-06 13:15:03

回答

5
"SR2G1M1D2".scan(/\D\d*/) 
=> ["S", "R2", "G1", "M1", "D2"] 

希望这有助于。

+1

很棒的回答。但我认为他需要''SR2G1M1D2'.scan(/ [A-Za-z] [^ A-Za-z] * /)',因为他说'每当下一个值是字符时它应该分裂'。 – rubyprince 2011-06-06 08:41:37

+0

@ ruby​​prince..thanx .. it works gr8 – Bijendra 2011-06-06 13:18:21

+0

@nathanvda ... yup ..it working ..thanks – Bijendra 2011-06-06 13:18:56

-1

用正则表达式分割应该这样做。基本上是一个正则表达式,\ D在\ D上带有积极的向前看。遗憾的是我没有用足够的了解格式

+1

这根本没有帮助。 www.rubular.com – Dex 2011-06-06 07:37:12

+0

这是不完整的答案。它应该是对这个问题的评论。 – sawa 2011-06-06 08:22:35

2

向前看符号只需使用#split与一个RegExp:

ruby-1.9.2-p180 :002 > "SR2G1M1D2".split(/(?=[a-zA-Z])/) 
=> ["S", "R2", "G1", "M1", "D2"] 
ruby-1.9.2-p180 :005 >