2012-08-06 83 views
2

我有这样的字符串:“1112222355”。如何使用Ruby获得像[[111],“2222”,“3”,“55”]这样的数组?如何从字符串中获取数组包含Ruby中相同的符号?

+2

' “112211”'是'[“11 ”22“, ”11“]' – tokland 2012-08-06 12:23:28

+0

而且不? [“1111”,“22”]? – Kashyap 2012-08-06 12:32:45

+0

@Kashyap,这就是我的意思,目前还不清楚OP是否想要将所有或仅连续组合。 – tokland 2012-08-06 12:36:20

回答

5

假设你只想组连续的元素,使用Enumerable#chunk

> "1112222355".chars.chunk { |x| x }.map { |c, cs| cs.join } 
=> ["111", "2222", "3", "55"] 
+0

'chunk {| x | x}'是为什么我添加了一些东西转向建议包含在2.0中的方面:http://bugs.ruby-lang.org/issues/6373 – 2012-08-06 13:35:48

+0

另请参阅:http://bugs.ruby-lang.org/issues/2172 – tokland 2012-08-06 13:36:51

+0

很酷,谢谢。 'll r从其他错误中引用。 – 2012-08-06 17:42:25

1
"1112222355".scan(/((.)\2*)/).map(&:first) 
# => ["111", "2222", "3", "55"] 
相关问题