|
|||||||
|
Кодовые точки и единицы
Время создания: 15.02.2022 23:40
Текстовые метки: java,конспект
Раздел: Программирование - Конспекты - Java
Запись: spline1986/tetra/master/base/1644950428b98730sny9/text.html на raw.githubusercontent.com
|
|||||||
|
|
|||||||
|
Строки в Java реализованы в виде последовательностей значений типа char. Этот тип хранит кодовые единицы юникода в кодирове UTF-16. Наиболее часто употребляемые символы представлены одной кодовой единицей, а дополнительные символы — двумя. Метод String.length() возвращает количество кодовых единиц в строке. Чтобы определить количество кодовых точек необходимо воспользоваться методом String.codePointsCount(<start>, <end>). Метод String.charAt(n) возвращает кодовую единицу на позиции n, где n находится в диапазоне от 0 до String.length() - 1. Для получения i-той кодовой точки служат выражения String greeting = "Hello"; int index = greeting.offsetByCodePoints(0, i); int cp = greeting.codePointAt(index); Просмотреть строку посимвольно можно следующим образом: int i = 0; while (i < greeting.length()) { int cp = greeting.codePointAt(i); if (Character.isSupplementaryCodePoint(cp)) i += 2; else i++; } Для просмотра строки в обратном порядке можно применить следующий код: int i = greeting.length - 1; while (i > 0) { i--; if (Character.isSurrogate(greeting.charAt(i))) i--; int cp = greeting.codePointAt(i); } Но проще воспользоваться методом String.codePoints(), формирующий поток значений типа int для отдельных кодовых точек. Полученный поток данных можно преобразовать в массив: int[] codePoints = str.codePoints().toArray(); Чтобы преобразовать массив кодовых точек в строку, можно воспользоваться конструктором класса String: String str = new String(codePoints, 0, codePoints.length()); |
|||||||
|
Так же в этом разделе:
|
|||||||
|
|||||||
|
|||||||
|