我有一个字符串,我希望从中获取另一个字符串,该字符串只有奇数位置的字符。
例如,如果我有一个名为ABCDEFGH的字符串,我期望的输出是ACEG,因为字符索引分别是0,2,4,6。我是用循环来做的,但Ruby中应该有一行实现(也许使用Regex?)。
答案 0 :(得分:3)
>> "ABCDEFGH".gsub /(.)./,'\1'
=> "ACEG"
答案 1 :(得分:2)
以下是单行解决方案:
"BLAHBLAH".split('').enum_for(:each_with_index).find_all { |c, i| i % 2 == 0 }.collect(&:first).join
或者:
''.tap do |res|
'BLAHBLAH'.split('').each_with_index do |char, index|
res << c if i % 2 == 0
end
end
另一个变种:
"BLAHBLAH".split('').enum_slice(2).collect(&:first).join
答案 2 :(得分:2)
其他一些方式:
使用Enumerable方法
"BLAHBLAHBLAH".each_char.each_slice(2).map(&:first).join
"BLAHBLAHBLAH".scan(/(.).?/).join
答案 3 :(得分:1)
不确定运行时速度,但这是一行处理。
res = "";
"BLAHBLAH".scan(/(.)(.)/) {|a,b| res += a}
res # "BABA"
答案 4 :(得分:1)
(0..string.length).each_with_index { |x,i| puts string[x] if i%2 != 0 }