Try putting the whole sentence into a StringBuilder, iterate through it, then use the isXXX methods of the Character class to work out whether you have a letter or not.
You can't do that with replaceAll(), but you can do it with regex. If you would like to try... take a look at the find(), appendReplacement(), and appendTail() methods of the Matcher class.