210просмотров
3 ноября 2025 г.
Score: 231
Малоизвестные возможности Intl Intl часто ассоциируется с простым форматированием чисел, дат и валют. Однако это API содержит и другие полезные функции: Intl.ListFormat — форматирует перечисления, корректно вставляя запятые и союзы: // "яблоки, груши и бананы" (new Intl.ListFormat("RU")).format( ["яблоки", "груши", "бананы"] ); Intl.RelativeTimeFormat — форматирует относительное время: const rtf = new Intl.RelativeTimeFormat("RU"); rtf.format(3, "days"); // "через 3 дня" rtf.format(-2, "hours"); // "2 часа назад" Intl.DurationFormat — форматирует интервалы времени: const time = { hours: 2, minutes: 35 }; // 2 часа 35 минут (new Intl.DurationFormat("RU", { style: "long", })).format(time); // 02:35:00 (new Intl.DurationFormat("RU", { hours: "2-digit", })).format(time); Intl.Segmenter — позволяет разбивать строки на сегменты с учётом особенностей локали и правил Юникод, что обеспечивает корректную работу даже для сложных языков и символов. // ["Несколько", " ", "слов", " ", "в", " ", "строке", " ", "😎", "."] Array.from( (new Intl.Segmenter("RU", { granularity: "word" })) .segment("Несколько слов в строке 😎.") ) .map((item) => "${item.segment}"); Например, в отличие от обычного .split(""), Segmenter не разбивает эмодзи: // ['\uD83D', '\uDE0E'] "😎".split(""); // => [{segment: "😎"}] [...(new Intl.Segmenter("RU")).segment("😎")];
210
просмотров
1415
символов
Да
эмодзи
Нет
медиа

Другие посты @around_dev

Все посты канала →
Малоизвестные возможности Intl Intl часто ассоциируется с пр — @around_dev | PostSniper