我已经用这种方式制作了一根绳子。
“AABBCCDD .....”按 4 分组,长度可变。
我需要一个方法,用这个字符串中的两个字符交换 2
def swap2_by_2( string )
???
end
如果输入为 AABBCCDD,则输出为 BBAADDCC
谢谢,我对红宝石非常陌生。
编辑:我的错误,一个更全面的例子可能是.. 输入:ABCDEFGH -> CDABGHEF
目前尚不清楚OP试图做什么,但如果是每四个字符用第三和第四个字符翻转第一个和第二个字符,那么OP显示的示例具有高度误导性和不恰当性(应该已经"ABCD..."
代替"AABB..."
)。在这种情况下,解决方案是:
string.gsub(/(..)(..)/, '\2\1')
考虑到您的问题,解释“ABCDEF”,我敢肯定,您正在寻找 Ruby 中的打包/解包:我在这里找到了一个很好的页面How to change bit order in Ruby
这里有两个非正则表达式版本:
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