Passa al contenuto principale

7. Strings (Stringhe)

La rappresentazione delle stringhe è simile alle convenzioni utilizzate nella famiglia di linguaggi di programmazione C. Una stringa inizia e finisce con virgolette. Tutti i caratteri Unicode possono essere inseriti tra le virgolette, ad eccezione dei caratteri che devono (MUST) essere escapati: virgolette, barra rovesciata e i caratteri di controllo (da U+0000 a U+001F).

Qualsiasi carattere può essere escapato. Se il carattere si trova nel piano multilingue di base (Basic Multilingual Plane, BMP) (da U+0000 a U+FFFF), può essere rappresentato come una sequenza di sei caratteri: una barra rovesciata, seguita dalla lettera minuscola u, seguita da quattro cifre esadecimali che codificano il punto di codice del carattere. Le lettere esadecimali da A a F possono essere maiuscole o minuscole. Quindi, ad esempio, una stringa contenente solo un singolo carattere barra rovesciata può essere rappresentata come "\u005C".

In alternativa, esistono rappresentazioni di escape in sequenza di due caratteri per alcuni caratteri popolari. Quindi, ad esempio, una stringa contenente solo un singolo carattere barra rovesciata può essere rappresentata in modo più compatto come "\\".

Per escapare un carattere esteso che non è nel piano multilingue di base, il carattere viene rappresentato come una sequenza di 12 caratteri, codificando la coppia surrogata UTF-16 (Surrogate Pair). Quindi, ad esempio, una stringa contenente solo il carattere chiave di violino (U+1D11E) può essere rappresentata come "\uD834\uDD1E".

string = quotation-mark *char quotation-mark

char = unescaped /
escape (
%x22 / ; " quotation mark U+0022
%x5C / ; \ reverse solidus U+005C
%x2F / ; / solidus U+002F
%x62 / ; b backspace U+0008
%x66 / ; f form feed U+000C
%x6E / ; n line feed U+000A
%x72 / ; r carriage return U+000D
%x74 / ; t tab U+0009
%x75 4HEXDIG ) ; uXXXX U+XXXX

escape = %x5C ; \
quotation-mark = %x22 ; "
unescaped = %x20-21 / %x23-5B / %x5D-10FFFF