我有一堆如下所示的字符串:
str = 'CA3 03223-DG 0101-CA2 0101-CA1 0101 pyramidal cells c (PC-c)'
也就是说,有一堆连字符分隔的前导字符串,例如“CA3 03223”,后跟一些单词(在上面的示例中,“pyramidal cells c (PC-c)”。我想在一行中收集所有的前导,连字符分隔的部分到一个数组中,同时从 中删除它们str
。在这一行的末尾,我应该有一个如下所示的数组:
['CA3 03223', 'DG 0101', 'CA2 0101', 'CA1 0101']
并且str
应该是:
'pyramidal cells c (PC-c)'
我目前的解决方案是:
myarray = []; match = ''
myarray << match.strip[0..-2] while (match = str.slice!(/[A-Z0-9]{2,3} \d{3,}[\-\s]/))
相当丑陋,我知道。如何将其缩短为一条合理长度的线?我正在寻找类似的东西String#scan
,它会删除它找到的匹配项。