我想从两个1之间提取所有0并将它们从二进制数中分组。到目前为止,我已经做到了,
529.to_s(2).scan(/1(0+)1/)
输出是只有一个元素的数组,虽然我想要两个元素。那是
529 => binary => 1000010001
["0000","000"]
答案 0 :(得分:2)
529.to_s(2).scan(/(?<=1)0+(?=1)/)
# => ["0000", "000"]
答案 1 :(得分:0)
这是怎么回事?
a = 529.to_s(2).split("1")
a.delete("")
a # => ["0000", "000"]
答案 2 :(得分:0)
两个1和组之间的所有0
所以我认为你不想要10,100,111000,1000等比赛。最简单的方法是从开始和结束中找到第一个的左右索引,然后开始仅查找零。
这是一种方式。
bin=8.to_s(2) #=> 1000
bin[bin.index('1')..bin.rindex('1')].scan /0+/
#=> []
bin=529.to_s(2) #=> 1000
bin[bin.index('1')..bin.rindex('1')].scan /0+/
#=> ["0000", "000"]
小心 0 。它不包含任何一个,你就没有了。