Skip to content

Instantly share code, notes, and snippets.

@bradfordw
Created June 2, 2009 21:09
Show Gist options
  • Save bradfordw/122592 to your computer and use it in GitHub Desktop.
Save bradfordw/122592 to your computer and use it in GitHub Desktop.
swap(Bin, Original, New) ->
swap(Bin, erlang:byte_size(Original), Bin, Original, New, 0).
swap(BinOrig, OriginalLen, Bin, Original, New, Acc) ->
case Bin of
<<Original:OriginalLen/binary, Right/binary>> ->
OtherRepl = swap(Right, Original, New),
<<Left:Acc/binary,_/binary>> = BinOrig,
<<Left/binary, New/binary, OtherRepl/binary>>;
<<_:8, Other/binary>> ->
swap(BinOrig, OriginalLen, Other, Original, New, Acc+1);
<<>> ->
BinOrig
end.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment