O que é o comprimento de uma string?

O comprimento de uma string depende do que você conta. Uma pessoa vê caracteres, mas os programas contam pontos de código, unidades de código UTF-16 ou bytes, e esses números geralmente são diferentes. O emoji 👍🏽 parece um único caractere, mas corresponde a 2 pontos de código, 4 unidades de código UTF-16 e 8 bytes UTF-8. JavaScript, Java e C# informam unidades de código UTF-16 como o comprimento, os bancos de dados geralmente limitam bytes e os campos de formulário podem contar quebras de linha como dois caracteres.

Descrição da ferramenta

Esta ferramenta mostra o comprimento de uma string em quatro unidades ao mesmo tempo e verifica se ele está dentro de um comprimento mínimo e máximo. Use-a para descobrir se um nome de usuário, título ou valor de banco de dados se encaixa em um limite ou por que dois programas informam comprimentos diferentes para o mesmo texto. Se a string for longa demais, você receberá uma cópia truncada que se encaixa no limite sem cortar um caractere ao meio.

Recursos

  • Conta caracteres, pontos de código Unicode, unidades de código UTF-16 e bytes UTF-8
  • Verifica o comprimento em relação a um mínimo e máximo opcionais, na unidade escolhida
  • Mostra quantas unidades faltam, sobraram ou excedem o limite
  • Trunca uma string longa demais sem dividir emojis, bandeiras ou letras acentuadas
  • Pode ignorar espaços em branco no início e no fim
  • Pode contar quebras de linha como CR LF, da forma como os formulários HTML as enviam

Como funciona

Os caracteres são clusters de grafemas, as unidades que uma pessoa lê como um único caractere, identificados pela segmentação de texto Unicode integrada ao navegador. Os pontos de código são os valores Unicode presentes na string. As unidades de código UTF-16 são o que String.length retorna em JavaScript: caracteres fora do Plano Multilingual Básico, como a maioria dos emojis, ocupam duas unidades. Os bytes UTF-8 correspondem ao tamanho da string codificada em UTF-8. O truncamento mantém caracteres inteiros até que o próximo faça o resultado ultrapassar o máximo.

Dicas

  • Para um limite de VARCHAR do MySQL ou de varchar do PostgreSQL, verifique por pontos de código Unicode. Para um limite em bytes, como uma chave de índice ou um campo de protocolo de rede, verifique por bytes UTF-8.
  • O atributo maxlength de um campo de entrada HTML conta unidades de código UTF-16, portanto um emoji pode ocupar duas.
  • Os navegadores enviam as quebras de linha de textarea como CR LF, portanto um servidor que verifica o comprimento pode contar cada quebra de linha duas vezes. Ative a opção CR LF para corresponder a esse comportamento.