-2

我已经用这种方式制作了一根绳子。

“AABBCCDD .....”按 4 分组,长度可变。

我需要一个方法,用这个字符串中的两个字符交换 2

def swap2_by_2( string )
???
end

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

谢谢,我对红宝石非常陌生。

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

4

3 回答 3

4

目前尚不清楚OP试图做什么,但如果是每四个字符用第三和第四个字符翻转第一个和第二个字符,那么OP显示的示例具有高度误导性和不恰当性(应该已经"ABCD..."代替"AABB...")。在这种情况下,解决方案是:

string.gsub(/(..)(..)/, '\2\1')
于 2013-11-13T17:23:31.333 回答
0

考虑到您的问题,解释“ABCDEF”,我敢肯定,您正在寻找 Ruby 中的打包/解包:我在这里找到了一个很好的页面How to change bit order in Ruby

于 2013-11-13T21:37:16.237 回答
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
于 2013-11-14T08:42:07.620 回答