exchange changes characters specified by string_arg1 from standard input into the corresponding character in the list specified by string_arg2 and sends the result to standard output. string_args specify ordered lists of ASCII characters. Most characters may represent themselves, and there are aliases for backslash escapes including octal ASCII values, "asciibetical" ranges of characters like A-Z and named character classes. You'll have to use \\ to specify a backslash, for example. See tr for the details.
The complement switch causes the first character list to be to be all the ASCII characters *not* specified by string_arg1.
The truncate switch is for when the first list of characters is longer than the second list. Normally exchange will replicate the last char in the second list to make it as long as the first. With the switch it will instead truncate the first list.
$exchange a b <<___
> aeubaaabbbataralataha
> ___
beubbbbbbbbtbrblbtbhb
$exchange a-f A-F <<_bla
> ;nuoetkhboua,.uj;otehjbneduxkoeu
> _bla
;nuoEtkhBouA,.uj;otEhjBnEDuxkoEu