Added tests created with Aida Manna.
Low hanging fruit… extracted validateInput
Replaced re-use of cryptSentence. Reformatted by Eclipse
Modified cryptWordToNumbers to use StringBuilder.
Modified cryptSentence to use StringBuilder.
Extracted boolean method in cryptWord to express 'if a char is found in charsToReplace'
Transformed crptWord to use StringBuilder.
Simplified for loop in cryptWordToNumbers
Simplified all the loops to use similar structures.
Simplified mechanism to identify if a word should be replaced. Removed unneeded transformation.
All loops in all methods use the same template.
Extracted new method on cryptWord to have all crypt methods with same structure.
Duplicates have been eliminated, but violating OCP.
Created new class and interface to handle all transformations in different classes. (template method?)
Added class to manage Numbers transformation.
Removed type parameter in crypt.
Created charCrypter for crypting only selected chars, but violating LSP.
Create fields for the Crypter classes to avoid creating instances (even though it wouldn't work in a multithreaded environment).
Applied ISP and LSP to segregate an interface for a configurable crypter from the CharCrypter interface.