Traits d’union et virgules ne séparent pas les mots

Le programme applique trim() aux extrémités puis sépare avec /\s+/u. Une entrée vide ou composée uniquement d’espaces vaut 0. Espaces, tabulations et sauts séparent les blocs ; traits d’union, virgules et apostrophes seuls ne le font pas. \s en JavaScript correspond à WhiteSpace et LineTerminator de la spécification.

Ainsi, state-of-the-art vaut 1, one,two vaut 1 et one, two vaut 2. don’t stop contient aussi deux blocs. ... vaut 1 malgré sa ponctuation seule : ce n’est pas un nombre de mots porteurs de sens. words est la statistique de l’outil dans le code.

countText("state-of-the-art").words // 1
countText("one,two").words          // 1
countText("one, two").words         // 2
countText("don’t stop").words       // 2
countText("...").words              // 1
one,two vaut 1 ; one, two vaut 2 ; state-of-the-art vaut 1
Schéma original de résultats réels de countText. Les guillemets délimitent l’entrée sans en faire partie. Les nombres sont les comptes de l’outil, pas des comptes linguistiques.

ECMAScript: CharacterClassEscape

Le texte sans espaces n’est pas segmenté selon la langue

你好世界 vaut 1. Cela ne veut pas dire que la phrase chinoise comporte un seul mot linguistique. Unicode UAX #29 explique que les frontières ne se limitent pas aux espaces et à la ponctuation et que certaines langues nécessitent des adaptations. Moyoutil n’applique ni cet algorithme ni une analyse par dictionnaire.

countText("你好世界").words // 1
countText("one  two").words // 2
countText("one\ntwo").words // 2
countText(" \t\n").words // 0

Unicode UAX #29: Word Boundaries

Collez du texte dans le compteur de caractères et d’octets pour actualiser les valeurs. Testez une phrase avec traits d’union ou sauts avant le brouillon complet. Si un éditeur ou une méthode est imposé, utilisez-le pour le contrôle final. Ajouter des espaces inutiles pour changer le compte modifie le texte lui-même.

Questions fréquemment posées

Les espaces répétés ou sauts augmentent-ils le compte ?

Des séparateurs consécutifs forment une frontière. Deux espaces entre one et two donnent encore 2 ; un saut de ligne aussi. Un même compte peut avoir des nombres différents de caractères avec espaces ou d’octets UTF-8.