String.codePoints()
Возвращает поток кодов символов Unicode. В отличие от chars(), эмодзи считается одним символом.
Доступно с: Java 9
Синтаксис
public IntStream codePoints()Возвращаемое значение
IntStreamIntStream с кодом каждого символа.
Примеры
length() считает единицы char, а codePoints() — настоящие символы:
void main() {
String text = "Hi😀";
IO.println(text.length());
IO.println(text.codePoints().count());
IO.println(text.codePointCount(0, text.length()));
}Результат:
4
3
3Каждый символ и его код в виде U+XXXX:
void main() {
"A€😀".codePoints().forEach(cp ->
IO.println(Character.toString(cp) + " U+" + Integer.toHexString(cp).toUpperCase()));
}Результат:
A U+41
€ U+20AC
😀 U+1F600Примечания
Тип char хранит 16 бит, а символы за пределами основной плоскости Unicode (эмодзи, редкие иероглифы) занимают два char — суррогатную пару. chars() выдаёт эти половинки по отдельности, codePoints() — целый символ. Код превращают обратно в строку через Character.toString(cp) или new StringBuilder().appendCodePoint(cp). codePointAt(i) возвращает код символа, начинающегося с индекса i.
См. также
- String.chars() — Возвращает поток кодов символов строки.
- String.length() — Возвращает количество символов в строке.
- Character.isDigit() — Проверяет, является ли символ цифрой. Рядом — isLetter(), isWhitespace(), isUpperCase().
- StringBuilder.reverse() — Переворачивает содержимое StringBuilder задом наперёд.
В учебнике
- Методы строк — Основные методы String в Java: поиск, substring, смена регистра, strip, replace, split, join, repeat и проверки строк.