Как обойти строчку?

В языке Java строки хранятся в кодировке UTF-8. В ней один символ храниться в code point, который может состоять из одного или двух значений char (то есть занимающих в памяти столько же места, сколько и одна переменная типа char). То есть, для ответа на вопрос нужно понимать, строка состоит из значений типа char или code point.

Для обхода строку типа char можно использовать метод charAt(), извлекая на каждой итерации по одному символу. Также можно использовать метод toCharArray(), который вернёт массив, инициализированный символами строки. Этот метод работает медленнее, зато в результате вы получаете массив, а значит произвольный доступ к любому его элементу.

Обрабатывать суррогатные пары нужно вручную, с помощью специальных методов, имеющихся в классе Character. Также можно использовать методы codePointAt() и codePointBefore(). У них в качестве параметра требуется указать индекс массива типа char. Выдают эти функции значения code point типа int.

В восьмой версии Java появились методы chars() и codePoints(), с помощью которых легко осуществлять обход. Эти функции выдают IntStream, который состоит из символов char и code point, соответственно. Носителем потока является строка. Копирование массива не нужно.

Поделиться уроком

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *