мы принимаем всевозможные национальные символы в строке UTF-8 на входе, и нам нужно преобразовать их в строку ASCII на выходе для некоторого использования устаревшей. (мы не принимаем китайские и японские символы, только европейские языки)
У нас есть небольшая утилита, чтобы избавиться от всех диакритик:
public static final String toBaseCharacters(final String sText) {
    if (sText == null || sText.length() == 0)
        return sText;
    final char[] chars = sText.toCharArray();
    final int iSize = chars.length;
    final StringBuilder sb = new StringBuilder(iSize);
    for (int i = 0; i < iSize; i++) {
        String sLetter = new String(new char[] { chars[i] });
        sLetter = Normalizer.normalize(sLetter, Normalizer.Form.NFC);
        try {
            byte[] bLetter = sLetter.getBytes("UTF-8");
            sb.append((char) bLetter[0]);
        } catch (UnsupportedEncodingException e) {
        }
    }
    return sb.toString();
}
Вопрос заключается в том, как заменить все немецкие острый s (ß, Đ, đ) и другие символы, которые проходят через вышеупомянутый метод нормализации, с их дополнениями (в случае ß дополнение, вероятно, будет "ss" и в case od Đ дополнение будет либо "D", либо "Dj" ).
Есть ли простой способ сделать это, без миллионов вызовов .replaceAll()?
Итак, например: Đonardan = Djonardan, Blaß = Blass и т.д.
Мы можем заменить все "проблемные" символы пустым пространством, но хотелось бы избежать этого, чтобы сделать выход как можно более похожим на вход.
Спасибо за ваши ответы,
бозо
