Spec-Zone.ru › JavaScript

Intl.Segmenter

Базовая поддержка Недавно стало доступно

Эта функция работает на новейших устройствах и в последних версиях браузеров. Эта функция может не работать на старых устройствах или в старых версиях браузеров. Она стала доступна во всех браузерах с апреля 2024 года.

Объект Intl.Segmenter обеспечивает локально-чувствительную сегментацию текста, позволяя получать значимые элементы (графемы, слова или предложения) из строки.

Попробуйте

const segmenterFr = new Intl.Segmenter("fr", { granularity: "word" });
const string = "Que ma joie demeure";

const iterator = segmenterFr.segment(string)[Symbol.iterator]();

console.log(iterator.next().value.segment);
// Expected output: 'Que'

console.log(iterator.next().value.segment);
// Expected output: ' '

Конструктор

Intl.Segmenter()
Создает новый объект Intl.Segmenter.

Статические методы

Intl.Segmenter.supportedLocalesOf()
Возвращает массив, содержащий из предоставленных локалей те, которые поддерживаются без необходимости использования локали по умолчанию среды выполнения.

Свойства экземпляра

Эти свойства определены в Intl.Segmenter.prototype и используются всеми экземплярами Intl.Segmenter.

Intl.Segmenter.prototype.constructor
Конструктор, который создал объект экземпляра. Для экземпляров Intl.Segmenter начальным значением является конструктор Intl.Segmenter.
Intl.Segmenter.prototype[Symbol.toStringTag]
Начальным значением свойства [Symbol.toStringTag] является строка "Intl.Segmenter". Это свойство используется в Object.prototype.toString().

Методы экземпляра

Intl.Segmenter.prototype.resolvedOptions()
Возвращает новый объект со свойствами, отражающими локаль и параметры гранулярности, вычисленные во время инициализации этого объекта Intl.Segmenter.
Intl.Segmenter.prototype.segment()
Возвращает новый итерируемый экземпляр Segments, представляющий сегменты строки в соответствии с локалью и гранулярностью этого экземпляра Intl.Segmenter.

Примеры

Основное использование и отличие от String.prototype.split()

Если бы мы использовали String.prototype.split(" ") для сегментации текста по словам, мы бы не получили правильного результата, если локаль текста не использует пробелы между словами (что имеет место для японского, китайского, тайского, лаосского, кхмерского, бирманского и т. д.).

const str = "吾輩は猫である。名前はたぬき。";
console.table(str.split(" "));
// ['吾輩は猫である。名前はたぬき。']
// The two sentences are not correctly segmented.
const str = "吾輩は猫である。名前はたぬき。";
const segmenterJa = new Intl.Segmenter("ja-JP", { granularity: "word" });

const segments = segmenterJa.segment(str);
console.table(Array.from(segments));
// [{segment: '吾輩', index: 0, input: '吾輩は猫である。名前はたぬき。', isWordLike: true},
// etc.
// ]

Спецификации

Спецификация
ECMAScript® 2027 Internationalization API Specification
# segmenter-objects

Совместимость с браузерами

Настольные компьютеры Мобильные устройства Сервер
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet WebView Android WebView on iOS Bun Deno Node.js
Segmenter
87
87
125
73
14.1
87
125
62
14.5
14.0
87
14.5
1.0.0
1.8
16.0.0
Segmenter
87
87
125
73
14.1
87
125
62
14.5
14.0
87
14.5
1.0.0
1.8
16.0.0
resolvedOptions
87
87
125
73
14.1
87
125
62
14.5
14.0
87
14.5
1.0.0
1.8
16.0.0
segment
87
87
125
73
14.1
87
125
62
14.5
14.0
87
14.5
1.0.0
1.8
16.0.0
supportedLocalesOf
87
87
125
73
14.1
87
125
62
14.5
14.0
87
14.5
1.0.0
1.8
16.0.0

См. также

  • Polyfill для Intl.Segmenter в FormatJS
  • Intl

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Segmenter

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API