开发者

How to get odd occurring text in a String in Ruby

开发者 https://www.devze.com 2023-01-12 22:07 出处:网络
I开发者_如何学运维 have a String and I want to get another string out of it which has only characters at odd occuring positions.

I开发者_如何学运维 have a String and I want to get another string out of it which has only characters at odd occuring positions.

For example if i have a string called ABCDEFGH, the output I expect is ACEG since the character indexes are at 0,2,4,6 respectively. I did it using a loop, but there should be one line implementation in Ruby (perhaps using Regex?).


>> "ABCDEFGH".gsub /(.)./,'\1'
=> "ACEG"


Here is one-line solution:

"BLAHBLAH".split('').enum_for(:each_with_index).find_all { |c, i| i % 2 == 0 }.collect(&:first).join

Or:

''.tap do |res|
  'BLAHBLAH'.split('').each_with_index do |char, index|
    res << c if i % 2 == 0
  end
end

One more variant:

"BLAHBLAH".split('').enum_slice(2).collect(&:first).join


Some other ways:

Using Enumerable methods

"BLAHBLAHBLAH".each_char.each_slice(2).map(&:first).join

Using regular expressions:

"BLAHBLAHBLAH".scan(/(.).?/).join


Not sure about the run-time speed but it's one line of processing.

res =  ""; 
"BLAHBLAH".scan(/(.)(.)/) {|a,b| res += a}
res # "BABA"


(0..string.length).each_with_index { |x,i| puts string[x] if i%2 != 0 }
0

精彩评论

暂无评论...
验证码 换一张
取 消