Vous pouvez désormais utiliser Intl.Segmenter
pour la segmentation de texte en fonction des paramètres régionaux afin de diviser une chaîne en mots, phrases ou graphèmes.
De nombreuses langues non latines, telles que le chinois et le japonais, n'utilisent pas d'espace pour séparer les mots. Par conséquent, l'utilisation de la méthode JavaScript split()
sur les espaces blancs pour diviser du texte en mots renvoie des résultats incorrects.
Lorsque vous créez un objet Intl.Segmenter
avec le constructeur Intl.segmenter()
, transmettez un locale
et des options telles que granularity
, qui peut avoir les valeurs "grapheme"
, "word"
ou "sentence"
. L'exemple suivant crée un objet Intl.Segmenter
pour le japonais, divisé en fonction du nombre de mots.
const segmenter = new Intl.Segmenter('ja-JP', { granularity: 'word' });
L'appel de la méthode segment()
sur un objet Intl.Segmenter
avec une chaîne de texte renvoie un itérable:
const segments = segmenter.segment(str);
console.table(Array.from(segments));
Lisez l'article Utiliser l'API Intl.Segmenter sur le blog Polypane pour découvrir un excellent tutoriel sur l'utilisation de cette fonctionnalité.
La page Segmentation internationale du texte avec Intl.Segmenter en JavaScript propose davantage d'exemples, y compris sur l'utilisation de Intl.Segmenter
avec des emoji.