Los guiones y las comas no dividen palabras
La implementación aplica trim() a los extremos y divide con /\s+/u. Una entrada vacía o solo con espacios cuenta como 0. Espacios, tabulaciones y saltos de línea separan bloques; los guiones, comas y apóstrofos por sí solos no. \s de JavaScript corresponde a WhiteSpace y LineTerminator de la especificación.
Así, state-of-the-art cuenta como 1, one,two como 1 y one, two como 2. don’t stop también tiene dos bloques. ... cuenta como 1 aunque solo sea puntuación; no interpretes el resultado como palabras con significado. words es la estadística del programa en el código.
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 // 1El texto sin espacios no se segmenta por idioma
你好世界 cuenta como 1. Eso no significa que la frase china tenga una sola palabra lingüística. Unicode UAX #29 explica que los límites no se reducen a espacios y puntuación y que algunos idiomas necesitan ajustes. Moyoutil no aplica ese algoritmo ni análisis por diccionario.
countText("你好世界").words // 1
countText("one two").words // 2
countText("one\ntwo").words // 2
countText(" \t\n").words // 0Unicode UAX #29: Word Boundaries
Pega texto en el contador de caracteres y bytes para actualizar las cifras. Prueba una frase representativa con guiones o saltos antes de pegar el borrador completo. Si la entrega exige un editor o método, úsalo para la comprobación final. Añadir espacios innecesarios para modificar el número cambia el propio texto.
Preguntas frecuentes
¿Varios espacios o saltos aumentan el recuento?
Los separadores consecutivos forman un límite. Dos espacios entre one y two siguen dando 2; un salto de línea también. El mismo número de palabras puede tener distintos caracteres con espacios o bytes UTF-8.