JS метод String.codePointAt()
Загальний опис
Метод String.prototype.codePointAt()
дозволяє отримати кодову точку Unicode для символу, що знаходиться на вказаному індексі рядка. Відмінність між codePointAt()
та його попередником charCodeAt()
полягає в тому, що перший підтримує повний набір Unicode, включаючи символи, які можуть бути представлені за допомогою двох "одиниць коду" (surrogate pairs), як-от емодзі або певні ієрогліфи. Таким чином, codePointAt()
є незамінним при роботі з текстами, що містять такі символи, забезпечуючи більш точну і вичерпну обробку рядків.
Для отримання кодової точки використовуйте codePointAt()
, передавши йому індекс символу у рядку. Якщо індекс вказує на першу одиницю коду сурогатної пари, метод повертає кодову точку для цілого символу. Якщо індекс вказує на другу одиницю коду або якщо символ не є частиною сурогатної пари, метод повертає кодову точку так само, як charCodeAt()
.
Ось приклад простого використання:
let greeting = "Привіт 👋";
let codePoint = greeting.codePointAt(7);
console.log(codePoint); // Виведе 128075, що є кодовою точкою для символу 👋
У цьому випадку, codePointAt()
повертає кодову точку для емодзі, що знаходиться на індексі 7.
Якщо потрібно перебрати рядок та отримати всі кодові точки, можна використати цикл for...of
, який коректно обробляє сурогатні пари:
for (let char of greeting) {
console.log(char + " має кодову точку " + char.codePointAt(0));
}
Один з важливих моментів при роботі з codePointAt()
полягає в тому, що результат може виходити за межі 16-бітового діапазону (0x0000
до 0xFFFF
), який використовується в charCodeAt()
. Це означає, що при роботі з символами, які мають коди вище 0xFFFF
, необхідно використовувати саме codePointAt()
для їх коректного виявлення та обробки. Таке розширення важливе для розробників, котрі бажають забезпечити міжнародну підтримку та обробку всіх можливих символів Unicode у своїх додатках і веб-сайтах.
Порада: | При роботі з рядками, що містять символи, які можуть бути представлені двома кодовими одиницями (так звані "сурогатні пари"), важливо використовувати метод
|
Порада: | Якщо ви хочете перебрати всі символи рядка та працювати з їх Unicode кодами, пам'ятайте, що метод
|
Порада: | Коли ви розробляєте функціонал, що потребує перетворення символів рядка в їхні Unicode коди, використовуйте |
Порада: | При створенні системи шифрування або інших алгоритмів, де вам потрібно конвертувати символи у коди та навпаки, використовуйте метод
|
Синтаксис
codePointAt(index)
Параметри
- *
index
Індекс на основі нуля, який вказує на символ у рядку, для якого потрібно повернути кодову точку. Якщо аргумент не вказаний або
undefined
, він конвертується у0
.
Return
integer
Повертає невід'ємне ціле число, що представляє кодову точку символу за зазначеним індексом. Якщо індекс виходить за межі від
0
доstr.length - 1
, методcodePointAt()
повертаєundefined
. У випадку, коли символ за зазначеним індексом є провідним сурогатом у кодуванні UTF-16, метод повертає кодову точку відповідної пари сурогатів. Якщо ж елемент є заключним сурогатом, метод повертає лише кодову одиницю цього сурогата.
Переглядачі
Переглядач | |||||
---|---|---|---|---|---|
41 |
29 |
9 |
28 |
12 |
Переглядач | ||||
---|---|---|---|---|
41 |
41 |
29 |
9 |
Переглядач | ||
---|---|---|
4.0.0 |
1.0 |
Приклади
У цьому прикладі користувачі зможуть ввести символ або рядок та побачити його Unicode кодову точку.
У цьому прикладі використовується метод codePointAt()
для отримання кодової точки першого символу рядка. Кодова точка представляє собою числове значення юнікоду конкретного символу.
// Рядок, який містить символ 'A'
let text = 'Aloha!';
// Отримання кодової точки для першого символу
let codePoint = text.codePointAt(0);
console.log(codePoint); // Виведе 65, оскільки 65 є кодом 'A' в юнікоді
У цьому прикладі ми використовуємо codePointAt()
для перевірки, чи є символ, що стоїть на певному індексі в рядку, сурогатною парою. Сурогатні пари використовуються в юнікоді для кодування символів, які не поміщаються в стандартний 16-бітний розмір. Це часто стосується емодзі та інших нестандартних символів.
// Рядок з емодзі, який представляється сурогатною парою
let text = '👍';
// Отримання кодової точки символу
let codePoint = text.codePointAt(0);
// Перевірка, чи перевищує кодова точка значення 0xFFFF (максимум для стандартних символів)
if (codePoint > 0xFFFF) {
console.log('Цей символ є сурогатною парою.');
console.log(`Його кодова точка: ${codePoint}.`); // Виведе кодову точку емодзі
} else {
console.log('Цей символ не є сурогатною парою.');
}