¿Qué es la longitud de un string?

La longitud de un string depende de lo que se cuente. Una persona ve caracteres, pero los programas cuentan puntos de código, unidades de código UTF-16 o bytes, y estas cantidades suelen diferir. El emoji 👍🏽 parece un solo carácter, pero consta de 2 puntos de código, 4 unidades de código UTF-16 y 8 bytes UTF-8. JavaScript, Java y C# devuelven las unidades de código UTF-16 como longitud, las bases de datos suelen limitar los bytes y los campos de formulario pueden contar los saltos de línea como dos caracteres.

Descripción de la herramienta

Esta herramienta muestra la longitud de un string en cuatro unidades a la vez y la compara con una longitud mínima y máxima. Úsala para comprobar si un nombre de usuario, título o valor de base de datos cabe dentro de un límite, o para averiguar por qué dos programas devuelven longitudes diferentes para el mismo texto. Si el string es demasiado largo, obtendrás una copia truncada que se ajusta al límite sin cortar un carácter por la mitad.

Funciones

  • Cuenta caracteres, puntos de código Unicode, unidades de código UTF-16 y bytes UTF-8
  • Comprueba la longitud con respecto a un mínimo y un máximo opcionales, en la unidad que elijas
  • Muestra cuántas unidades faltan, sobran o quedan antes de alcanzar el límite
  • Trunca un string demasiado largo sin dividir emojis, banderas ni letras acentuadas
  • Permite ignorar los espacios en blanco iniciales y finales
  • Permite contar los saltos de línea como CR LF, tal como los envían los formularios HTML

Cómo funciona

Los caracteres son clústeres de grafemas: las unidades que una persona interpreta como un solo carácter, identificadas mediante la segmentación de texto Unicode integrada en el navegador. Los puntos de código son los valores Unicode del string. Las unidades de código UTF-16 son las que devuelve String.length en JavaScript: los caracteres fuera del Plano Multilingüe Básico, como la mayoría de los emojis, ocupan dos. Los bytes UTF-8 representan el tamaño del string codificado como UTF-8. El truncamiento conserva los caracteres completos hasta que añadir el siguiente supera el máximo.

Consejos

  • Para un límite de VARCHAR de MySQL o varchar de PostgreSQL, comprueba la longitud por puntos de código Unicode. Para un límite de bytes, como una clave de índice o un campo de un protocolo de red, comprueba la longitud por bytes UTF-8.
  • El atributo maxlength de una entrada HTML cuenta las unidades de código UTF-16, por lo que un emoji puede ocupar dos.
  • Los navegadores envían los saltos de línea de los campos textarea como CR LF, por lo que un servidor que comprueba la longitud puede contar cada salto de línea dos veces. Activa la opción CR LF para que coincida.