2012-08-06 67 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"] 
相關問題