Tekenreekslengtecontrole
Controleer de lengte van een tekenreeks in tekens, Unicode-codepunten, UTF-16-code-eenheden en UTF-8-bytes. Stel een minimale en maximale lengte in om te zien of de tekenreeks past, en ontvang een afgekapt exemplaar waarbij emoji nooit worden gehalveerd. Werkt in je browser.
Invoer
Uitvoer
Readme
Wat is de lengte van een string?
De lengte van een string hangt af van wat je telt. Een persoon ziet tekens, maar programma's tellen codepunten, UTF-16-code-eenheden of bytes, en deze aantallen verschillen vaak. De emoji 👍🏽 ziet eruit als één teken, maar bestaat uit 2 codepunten, 4 UTF-16-code-eenheden en 8 UTF-8-bytes. JavaScript, Java en C# rapporteren UTF-16-code-eenheden als de lengte, databases beperken vaak het aantal bytes en formuliervelden kunnen regeleinden als twee tekens tellen.
Beschrijving van de tool
Deze tool toont de lengte van een string tegelijkertijd in vier eenheden en controleert deze aan de hand van een minimale en maximale lengte. Gebruik de tool om te controleren of een gebruikersnaam, titel of databasewaarde binnen een limiet past, of om te achterhalen waarom twee programma's verschillende lengtes rapporteren voor dezelfde tekst. Als de string te lang is, krijg je een afgekorte kopie die binnen de limiet past zonder een teken halverwege af te breken.
Functies
- Telt tekens, Unicode-codepunten, UTF-16-code-eenheden en UTF-8-bytes
- Controleert de lengte aan de hand van een optionele minimum- en maximumwaarde, in de eenheid die je kiest
- Toont hoeveel eenheden er nog over zijn, ontbreken of de limiet overschrijden
- Kort een te lange string in zonder emoji, vlaggen of letters met accenten op te splitsen
- Kan witruimte aan het begin en einde negeren
- Kan regeleinden tellen als CR LF, zoals HTML-formulieren deze verzenden
Hoe het werkt
Tekens zijn graphemeclusters: eenheden die iemand als één teken leest, bepaald met de ingebouwde Unicode-tekstsegmentatie van de browser. Codepunten zijn de Unicode-waarden in de string. UTF-16-code-eenheden zijn wat String.length in JavaScript retourneert: tekens buiten het Basic Multilingual Plane, zoals de meeste emoji, nemen twee eenheden in beslag. UTF-8-bytes zijn de grootte van de string wanneer deze als UTF-8 is gecodeerd. Bij het afkorten worden volledige tekens behouden totdat het volgende teken de maximale lengte zou overschrijden.
Tips
- Controleer voor een
VARCHAR-limiet in MySQL of eenvarchar-limiet in PostgreSQL op Unicode-codepunten. Controleer voor een limiet in bytes, zoals bij een indexsleutel of een veld in een netwerkprotocol, op UTF-8-bytes. - Het kenmerk
maxlengthvan een HTML-invoerveld telt UTF-16-code-eenheden, waardoor een emoji maximaal twee eenheden kan gebruiken. - Browsers verzenden regeleinden in
textareaals CR LF, waardoor een server die de lengte controleert elk regeleinde twee keer kan tellen. Schakel de optie CR LF in om dit overeen te laten komen.