Micro blog

Micro blog

Facile

Istruzioni

Hai individuato una lacuna nel mercato dei social media per i post molto molto brevi. Ora che Twitter consente post da 280 caratteri, le persone che vogliono aggiornamenti rapidi sui social media restano insoddisfatte. Decidi di creare il tuo social network.

Per rendere il tuo prodotto degno di nota, lo rendi estremo e consenti solo post di 5 caratteri o meno. I post di più di 5 caratteri devono essere troncati a 5.

Per consentire ai tuoi utenti di esprimersi appieno, consenti le emoji e altri caratteri Unicode.

Il compito è troncare le stringhe di input a 5 caratteri.

Codifiche del testo

Il testo memorizzato in formato digitale deve essere convertito in una serie di byte. Esistono 3 modi di uso comune per mappare i caratteri ai byte.

  • ASCII può codificare i caratteri della lingua inglese. Tutti i caratteri sono esattamente lunghi 1 byte.
  • UTF-8 è una codifica di testo Unicode. I caratteri occupano tra 1 e 4 byte.
  • UTF-16 è una codifica di testo Unicode. I caratteri sono lunghi 2 o 4 byte.

UTF-8 e UTF-16 sono entrambe codifiche Unicode, il che significa che sono in grado di rappresentare una vastissima gamma di caratteri, tra cui:

  • Testo nella maggior parte delle lingue e dei sistemi di scrittura del mondo
  • Testo storico
  • Emoji

UTF-8 e UTF-16 sono entrambe codifiche a lunghezza variabile, il che significa che caratteri diversi occupano quantità di spazio diverse.

Considera la lettera «a» e l'emoji «😛». In UTF-16 la lettera occupa 2 byte, mentre l'emoji ne occupa 4.

Il trucco di questo esercizio è usare le API pensate per i caratteri Unicode (i punti di codice) invece che per le unità di codice Unicode.

Code point e code unit di Unicode

Una stringa «normale» codificata in UTF-16 può essere rappresentata come una serie di caratteri, dove ogni carattere può essere lungo fino a 16 bit (da qui il nome UTF-16). Questo significa che ci sono al massimo 2¹⁶ (due alla sedicesima potenza), cioè 65536 caratteri possibili rappresentabili con 16 bit, ovvero 1 code unit. Questi 65536 caratteri formano quello che è noto come Basic Multilingual Set, che è abbastanza grande da contenere i caratteri più comuni della maggior parte delle lingue.

Tuttavia, alcuni simboli non entrano in un solo code unit. La soluzione è rappresentarli con due code unit. Questi due code unit UTF-16, spesso chiamati anche coppia surrogata, formano un code point.

Quindi, in sintesi, quando parliamo di codifica UTF-16:

  • Un code unit è composto da 16 bit (o meno) e rappresenta un singolo carattere.
  • Un code point è composto da uno o due code unit e rappresenta un singolo carattere.

Per rendere il tutto ancora più confuso, esistono anche i cluster di grafemi, che sono in pratica sequenze di caratteri Unicode (code point) che dovrebbero essere trattate come un'unica unità visiva. Per esempio, alcune emoji, come questa 👨‍👦.

UTF-16 in Javascript

La maggior parte dei metodi integrati di Javascript funziona con stringhe codificate in UTF-16, ma si basa sui code unit UTF-16. Per esempio, il metodo String.prototype.split("") separa una stringa per code unit.

Al contrario, gli String iterators iterano per code point.

Puoi leggere molto di più e trovare esempi sulle stringhe Unicode su MDN.

Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
JavaScript Exercism

Vuoi iniziare Micro blog?

Iscriviti a Exercism per imparare e padroneggiare JavaScript con 37 concetti159 esercizi e il mentoring di persone reali, tutto gratis.