Используйте java.text.Normalizer
, чтобы обработать это для вас.
string = Normalizer.normalize(string, Normalizer.Form.NFD);
Это отделит все знаки акцента от символов. Затем вам просто нужно сравнить каждого персонажа с буквой и выбросить те, которые не являются.
string = string.replaceAll("[^\\p{ASCII}]", "");
Если ваш текст находится в юникоде, вы должны использовать это вместо:
string = string.replaceAll("\\p{M}", "");
Для юникода \\P{M}
соответствует базовому глифу, а \\p{M}
(нижний регистр) соответствует каждому акценту.
Благодаря GarretWilson для указателя и regular-expressions.info для большого руководства по юникоду.