That depends on what you define as special characters, but try
  replaceAll(...):
String result = yourString.replaceAll("[-+.^:,]","");
Note that the ^ character must not be the first one in the list, since
  you'd then either have to escape it or it would mean "any but these
  characters".
Another note: the - character needs to be the first or last one on the
  list, otherwise you'd have to escape it or it would define a range (
  e.g. :-, would mean "all characters in the range : to ,).
So, in order to keep consistency and not depend on character
  positioning, you might want to escape all those characters that have a
  special meaning in regular expressions (the following list is not
  complete, so be aware of other characters like (, {, $ etc.):
String result = yourString.replaceAll("[\\-\\+\\.\\^:,]","");
If you want to get rid of all punctuation and symbols, try this regex:
  \p{P}\p{S} (keep in mind that in Java strings you'd have to escape
  back slashes: "\p{P}\p{S}").
A third way could be something like this, if you can exactly define
  what should be left in your string:
String  result = yourString.replaceAll("[^\\w\\s]","");
Here's less restrictive alternative to the "define allowed characters"
  approach, as suggested by Ray:
String  result = yourString.replaceAll("[^\\p{L}\\p{Z}]","");
The regex matches everything that is not a letter in any language and
  not a separator (whitespace, linebreak etc.). Note that you can't use
  [\P{L}\P{Z}] (upper case P means not having that property), since that
  would mean "everything that is not a letter or not whitespace", which
  almost matches everything, since letters are not whitespace and vice
  versa.