Как убрать свечение свитка?

Решение @David Conrad - это самое быстрое, что я пытался использовать Normalizer, но у него есть ошибка. Он в основном разделяет символы, которые не являются акцентами, например, китайские иероглифы и другие буквы, такие как æ, все лишены. Символы, которые мы хотим разбить, - это метки интервалов, символы, которые не занимают дополнительной ширины в финальной строке. Эти символы нулевой ширины в основном объединяются в какой-то другой символ. Если вы можете видеть их изолированными как символ, например, как это, я полагаю, что он сочетается с символом пробела.

public static String flattenToAscii(String string) {
    char[] out = new char[string.length()];
    String norm = Normalizer.normalize(string, Normalizer.Form.NFD);

    int j = 0;
    for (int i = 0, n = norm.length(); i < n; ++i) {
        char c = norm.charAt(i);
        int type = Character.getType(c);

        //Log.d(TAG,""+c);
        //by Ricardo, modified the character check for accents, ref: http://stackoverflow.com/a/5697575/689223
        if (type != Character.NON_SPACING_MARK){
            out[j] = c;
            j++;
        }
    }
    //Log.d(TAG,"normalized string:"+norm+"/"+new String(out));
    return new String(out);
}
24
задан Rémi Rousselet 31 July 2018 в 13:37
поделиться