Me gustaría preguntar, quiero contar la cantidad de texto en la demostración, ¡pero ignore todos los espacios en blanco! Actualmente, solo puedo ignorar el espacio en blanco antes y después del texto usando trim(), pero el espacio en blanco entre el texto aún se contará. Espero que este ejemplo El valor de console.log en console.log debería ser 13, el número de palabras, pero ahora el resultado será 17. ¿Cómo puedo ignorar el espacio en blanco entre las palabras?
$('.demo').each(function(){ $(this).text((i, t) => t.trim()); let textlength = $(this).html().length; console.log(textlength); }) .demo{ white-space:pre; } <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <p class="demo"> lorem test demo </p>Creo que la forma más fácil de hacer esto es reemplazar todos los espacios en blanco con nada.
En primer lugar, para averiguar qué es un espacio en blanco y qué no, podemos usar una expresión regular.
/\s+/gEsto significa encontrar cualquier tipo de espacio, globalmente en toda la cadena.
Entonces solo es cuestión de llamar a .replace()
text.replace(/\s/g, ''); $('.demo').each(function(){ $(this).text((i, t) => t.trim()); let textlength = $(this).html().replace(/\s+/g, '').length; console.log(textlength); })Podemos usar una expresión regular para eliminar todos los espacios en blanco antes de calcular la longitud.
Puede hacer match con todos los caracteres que no sean espacios en blanco. Producirá una matriz, y puede verificar su longitud.
$('.demo').each(function() { const re = /[^\s-]/g; const match = this.textContent.match(re); console.log(match.length); }); .demo{ white-space:pre; } <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <p class="demo"> lorem test demo </p>