Sprawdzanie długości ciągu znaków
Sprawdź długość ciągu znaków w znakach, punktach kodowych Unicode, jednostkach kodu UTF-16 i bajtach UTF-8. Ustaw minimalną i maksymalną długość, aby sprawdzić, czy ciąg się mieści, oraz uzyskaj obciętą kopię, która nigdy nie przetnie emoji na pół. Działa w przeglądarce.
Wejście
Wyjście
Instrukcja
Czym jest długość stringu?
Długość stringu zależy od tego, co liczysz. Człowiek widzi znaki, ale programy liczą punkty kodowe, jednostki kodowe UTF-16 lub bajty, a te wartości często się różnią. Emoji 👍🏽 wygląda jak jeden znak, ale składa się z 2 punktów kodowych, 4 jednostek kodowych UTF-16 i 8 bajtów UTF-8. JavaScript, Java i C# zwracają jako długość liczbę jednostek kodowych UTF-16, bazy danych często ograniczają liczbę bajtów, a pola formularzy mogą liczyć znaki końca wiersza jako dwa znaki.
Opis narzędzia
To narzędzie jednocześnie pokazuje długość stringu w czterech jednostkach i sprawdza ją względem minimalnej oraz maksymalnej długości. Użyj go, aby sprawdzić, czy nazwa użytkownika, tytuł lub wartość w bazie danych mieści się w limicie, albo dlaczego dwa programy zwracają różne długości tego samego tekstu. Jeśli string jest zbyt długi, otrzymasz obciętą kopię mieszczącą się w limicie, bez przecięcia znaku na pół.
Funkcje
- Zlicza znaki, punkty kodowe Unicode, jednostki kodowe UTF-16 i bajty UTF-8
- Sprawdza długość względem opcjonalnej minimalnej i maksymalnej wartości, w wybranej jednostce
- Pokazuje, ile jednostek pozostało do limitu, ile brakuje lub o ile limit został przekroczony
- Obcina zbyt długi string bez rozdzielania emoji, flag ani liter ze znakami diakrytycznymi
- Może ignorować początkowe i końcowe białe znaki
- Może liczyć znaki końca wiersza jako CR LF, tak jak są one wysyłane przez formularze HTML
Jak to działa
Znaki to klastry grafemów — jednostki, które człowiek odczytuje jako jeden znak — wykrywane za pomocą wbudowanej w przeglądarkę segmentacji tekstu Unicode. Punkty kodowe to wartości Unicode znajdujące się w stringu. Jednostki kodowe UTF-16 to wartości zwracane przez String.length w JavaScript: znaki spoza Podstawowej Płaszczyzny Wielojęzycznej, takie jak większość emoji, zajmują dwie jednostki. Bajty UTF-8 określają rozmiar stringu zakodowanego w UTF-8. Obcinanie zachowuje całe znaki, dopóki dodanie kolejnego nie spowodowałoby przekroczenia maksymalnej długości.
Wskazówki
- W przypadku limitu
VARCHARw MySQL lubvarcharw PostgreSQL sprawdzaj długość według punktów kodowych Unicode. W przypadku limitu bajtów, na przykład dla klucza indeksu lub pola protokołu sieciowego, sprawdzaj ją według bajtów UTF-8. - Atrybut
maxlengthelementu wejściowego HTML liczy jednostki kodowe UTF-16, więc emoji może zająć maksymalnie dwie jednostki. - Przeglądarki wysyłają znaki końca wiersza w elementach textarea jako CR LF, dlatego serwer sprawdzający długość może liczyć każdy znak końca wiersza podwójnie. Włącz opcję CR LF, aby uzyskać zgodność.