在红宝石中交换两个2×2的字符串

时间:2013-11-13 17:01:19

标签: ruby string

我用这种方式做了一个字符串。

“AABBCCDD .....”按4分组变长。

我需要一个方法,将该字符串中的字符2交换为两个字符

def swap2_by_2( string )
???
end

如果输入为AABBCCDD,则输出为BBAADDCC

谢谢,我非常喜欢红宝石。

编辑:我的错误,一个更全面的例子可能是..输入:ABCDEFGH - > CDABGHEF

3 个答案:

答案 0 :(得分:4)

目前还不清楚OP正在尝试做什么,但是如果要用每四个字符翻转第一个和第二个字符以及第三个和第四个字符,则OP显示的示例具有高度误导性和不适当性(应该是"ABCD..."而不是"AABB...")。在这种情况下,解决方案将是:

string.gsub(/(..)(..)/, '\2\1')

答案 1 :(得分:0)

考虑到你的问题,解释“ABCDEF”,我确信,你正在寻找Ruby中的打包/解压缩:我在这里找到了一个好页面How to change bit order in Ruby

答案 2 :(得分:0)

这里有两个非正则表达式版本:

p 'AABBCCDD'.chars
  .each_slice(2)
  .each_slice(2)
  .map(&:reverse)
  .join

#=> "BBAADDCC"

# or

'AABBCCDD'.chars
  .each_slice(4)
  .map{|x| x.rotate(2)}
  .join