Menghitung string yang sama dengan empat cara
Moyoutil menghitung termasuk spasi dengan [...s].length, yang menghitung titik kode. s.length JavaScript menghitung unit UTF-16. Urutan memiliki empat titik kode orang dan tiga penghubung U+200D: total tujuh. Panjang UTF-16 adalah 11 dan TextEncoder menghasilkan 25 byte UTF-8.
const s = "👨👩👧👦";
[...s].length // 7
s.length // 11
new TextEncoder().encode(s).length // 25Batas teks dan batas masukan
Unicode UAX #29 menjelaskan batas grafem diperluas dan aturan yang tidak memisahkan urutan emoji ZWJ. Intl.Segmenter dengan grapheme menghasilkan satu segmen untuk contoh ini. Batas grafem tidak menjamin tampilan atau aturan jumlah karakter semua formulir.
const segmenter = new Intl.Segmenter("en", {
granularity: "grapheme"
});
[...segmenter.segment(s)].length // 1Unicode UAX #29: Grapheme Cluster Boundaries
Moyoutil tidak menyediakan jumlah grafem atau UTF-16 terpisah. Tempel urutan di penghitung karakter dan byte: 7 termasuk spasi, 7 tanpa spasi, dan 25 byte UTF-8. Periksa apakah batas berarti karakter, byte, atau UTF-16 lalu verifikasi di formulir tujuan. Menghapus penghubung mengubah urutan asli.
Pertanyaan yang Sering Diajukan
Apakah semua emoji dihitung sebagai tujuh karakter?
Tidak. Hasil ini khusus untuk urutan keluarga tersebut. Titik kode berbeda menghasilkan jumlah berbeda. String kosong memiliki nol titik kode, unit UTF-16, byte UTF-8, dan grafem.